skf

Autres langues

Langue: ja

Version: 387164 (fedora - 01/12/10)

Section: 1 (Commandes utilisateur)

NAME

skf - シンプル漢字フィルタ(v1.97)

SYNOPSIS

skf [Options] [拡張オプション] [infiles..]

DESCRIPTION

skf は、ネットワークでメールやニュースの読み書き、SGML 文書の加工をするために作られた i18n を指向した漢字コードの変換フィルタである。特に skf は受信を重視、すなわちさまざまな文字コードを用いて記述されたテキストを、 日本語が読める環境で可読な形式に変換することを目的として作成されており、 逆に文字コード外のエンコーディング等については最小限の機能しか実装していない。

nkf 同様 skf は入力に X 0201 かな部が含まれていないという前提の元に、 日本語入力コードを完全ではないが自動認識する。 skf が「自動」認識できる入力のコード系は,7 ビットおよび 8 ビット JIS (X 0201(ESC-(-I) を含む), X 0208, X 0212, X 0213)、マイクロソフトコードページ (いわゆるシフトJIS を含む), EUC (日本語, 韓国語, 中国語伝統字, 中国語簡体字), ASCII, ISO-646(1973), BS 4730(UK), DIN 66-003, NF Z 62-010(仏), ISO-8859-1/2/3/4/5/6/7/8/9/10/11/14/15/16, ECMA-113-Cyrillic などである。 入力に明示指定することによって、更に Unicode 標準転送形式 (UTF-16, UTF-8, UTF-7), KOI-8-R, KOI-8-U, Big5 (大五碼), GB2312 (HZ), KEIS83/90, JEF, VISCII(rfc1456. VIQR も可) ほかが扱えるほか、 MIME/CAP/ACE/URI 文字参照のデコード機能や、Unicode 正規分解機能も持っている。 8bit 系の X 0201 かな部は入力として明示指定されれば動作する。

出力できる漢字コード系は, 7ビット/8ビットJIS (JIS X 0208, X 0212, X 0213), 一部のマイクロソフトコードページ, EUC-JP, EUC-KR, EUC-CN, Big5, ISO-8859, Unicode などである。また、X 0201 かな出力が可能であり、JIS 7 単位系のロッキングシフト、EUC G2 へのシングルシフト、 JIS 8単位系、ESC-(-I をサポートしている。 また、JIS X 0212 補助漢字の出力が JIS, EUC-JP, Unicode 出力指定時可能である。

また、skf は言語の機能拡張として、 いくつかの言語のプラグインとして動作するようコンパイルすることも可能である。 これらについての詳細は、README.txt 参照のこと。

上記のとおり、 skf は入力を「可読」にすることを目的としており、元となった nkf とは異なり対象となるシステムにあわせた積極的なコードの修正、 あるいは改変をを行っている。このような修正には、例えば JIS X 0208:1997 の追加文字の可読修正、各社外字のゲタ/文字変換、 リガチャの展開、罫線素片の英字記号化、HTML実体表現への変換などの処理を含む。


  入力は、ファイルを指定しなければ、標準入力となる。出力は --in-place または --overwrite 指定時以外は標準出力である。 入力ファイルは複数個指定する事ができる。オプションは、環境変数 SKFENV、skfenv、コマンドライン指定、の順に読まれ、上書きされ る (root で実行時は環境変数は読まない。また、Ruby や Perl の機能拡張はこれらの環境変数を読まない)。コード指定に Locale は見ていないが、標準エラー出力に吐かれるエラーについては Locale 指定に従う (Locale 機能のある OS のみ。Ruby 等の機能拡張でも有効)。

オプション

skf は新規に書き起こしたもので、内部的には全く nkf とは異なるが、nkf 互換を意図しており、主なオプションは nkf(1.4) 互換に作られている。 指定できるオプションは、以下の通り。 拡張オプションは、必ずしも他の各種日本語プログラムで扱えるコードを出力しない場合があるので、 何をしているのかよく理解して利用のこと。 スイッチ、警告などはデフォルトはすべて切である。

バッファ制御

-b
バッファリング出力を行う (デフォルト)。
-u
出力時に,バッファリングしない。文字認識能力は低下する。

入出力コード・コードセット指定

--ic=
入力コードセット
入力のコードセットが 入力コードセット であることを指定する。取りうるコードセットは以下に示す。
--oc=
出力コードセット
出力のコードセットが 出力コードセット であることを指定する。取りうるコードセットは以下に示す。 指定しない場合の標準値は、配布パッケージでは euc-jp であるが、コンパイル指定に依存する。-h オプションを指定することにより標準値を出力するので確認されたい。

サポートコードセット

サポートされているコードセットは以下の通り。コードセット名では大文字小文字の違いは無視される。 また、IANA 登録の iso-2022 互換のコードセットは自動認識されるため、明示指定が無視される場合がある。 以下、in は入力/out は出力として、o はサポートされていることを、x はサポートされていないことを意味する。

in out name description
o o iso8859-1 ascii + iso-8859-1 (latin-1)
o o iso8859-2 ascii + iso-8859-2 (latin-2)
o o iso8859-3 ascii + iso-8859-3 (latin-3)
o o iso8859-4 ascii + iso-8859-4 (latin-4)
o o iso8859-5 ascii + iso-8859-5 (Cyrillic)
o o iso8859-6 ascii + iso-8859-6 (Arabic)
o o iso8859-7 ascii + iso-8859-7 (Greek)
o o iso8859-8 ascii + iso-8859-8 (Hebrew)
o o iso8859-9 ascii + iso-8859-9 (latin-5)
o o iso8859-10 ascii + iso-8859-10 (latin-6)
o o iso8859-11 ascii + iso-8859-11 (Thai)
o o iso8859-13 ascii + iso-8859-13 (Baltic Rim)
o o iso8859-14 ascii + iso-8859-14 (Celtic)
o o iso8859-15 ascii + iso-8859-15 (Latin-9)
o o iso8859-16 ascii + iso-8859-16
o o koi-8r koi-8r (Russian)
o o cp1251 Cyrillic latin MS cp1251
o o jis iso-2022-jp (rfc1496 7bit JIS)
o o iso-2022-jp-x0213 iso-2022-jp-3 (JIS X 0213:2000).

                      a.k.a. jis X 0213
o o jis-x0213-strict iso-2022-jp-3-strict
o o iso-2022-jp-2004 iso-2022-jp-2004(JIS X 0213:2004)

                      a.k.a. jis-x0213-2004
o o oldjis iso-2022-jp (JIS X 0208:1978 いわゆる旧 JIS)
o o euc-jp EUC エンコード JIS X 0208:1997 日本語
o o euc-x0213 EUC エンコード JIS X 0213:2000
o o euc-jis-2004 EUC エンコード JIS X 0213:2004
o o euc-kr EUC エンコード KS X 1001 韓国語
o o euc7-kr 7bitEUC エンコード KS X 1001 韓国語
o o uhc Windows 統合ハングルコード (Windows cp949)
o o johab KS X 1001-johab 韓国語
o o euc-cn EUC エンコード簡体字中国語
o o euc7-cn 7bitEUC エンコード簡体字中国語
o o hz HZ エンコード簡体字中国語
o o euc-tw EUC エンコード CNS11643 伝統字中国語
o o gb12345 EUC エンコード GB12345 伝統字中国語
o o gbk GBK エンコード簡体字中国語
o o gb18030 GB18030 エンコード簡体字中国語
o o big5 BIG5 (倚天方式, Euro つき)
o o big5-cp950 BIG5 (Microsoft cp950, Euro つき)
o o big5-hkscs BIG5 with HKSCS
o o big5-2003 BIG5-2003
o o big5-uao BIG5 Unicode 補完計画拡張コード
o o sjis Shiftjis (IBM cp943)
o o shiftjis-x0213 Shiftjis-エンコード JIS X 0213:2000
o o shiftjis-2004 Shiftjis-エンコード JIS X 0213:2004
o x sjis-cellular Shiftjis-エンコード JIS X 0208:1997

                      NTT Docomo, Vodafone 携帯絵文字対応
o o cp932 Shift-jis-エンコード MS cp932
o o cp932w Shift-jis-encoded MS cp932 (Windows 互換)
o o cp50220 Microsoft codepage 50220
o o cp50221 Microsoft codepage 50221
o o cp50222 Microsoft codepage 50222
o o cp51932 Microsoft codepage 51932 (EUC 類似)
o o oldsjis Shift-jis (JIS X 0208:1978 文字集合)
o o viscii VISCII (rfc1456) ベトナム語
o o viqr VISCII (VIQR-rfc1456) ベトナム語
o o keis 日立 KEIS83/90
o x jef 富士通 JEF (基本コードのみ)
o x ibm930 IBM EBCDIC DBCS 日本語
o x ibm931 IBM EBCDIC DBCS ラテン文字日本語
o x ibm933 IBM EBCDIC DBCS 韓国語
o x ibm935 IBM EBCDIC DBCS 簡体字中国語
o x ibm937 IBM EBCDIC DBCS 伝統字中国語
o o unicode Unicode(TM) UCS-2/UTF-16(LE)
o o utf7 Unicode(TM) UTF-7
o o utf8 Unicode(TM) UTF-8
o x transparent 透過モード (下記参照)

コードセット詳細

iso-8859-*

G0 = GL は ascii、G1 = GR は iso-8859-* となる。出力時、G1 に iso-8859-* をセットするシーケンスが出力され、8bit エンコーディングとなる。
jis, iso-2022-jp

iso-2022-jp-2 エンコーディングで、JIS X 0208:1997 コードを出力する。 G0 = GL は JIS X 0201 Roman、 G1 は JIS X 0201 かな、G2 は iso-8859-1、G3 は X 0212 補助漢字となる。
jis-x0213, iso-2022-jp-3, iso-2022-jp-2000

iso-2022-jp-3 エンコーディングである。入力では自動判定される。 出力時、G0 = GL は JIS X 0201 Roman、 G1 は JIS X 0201 かな、G2 は iso-8859-1、G3 は X 0213:2000 第二面となる。
jis-x0213-strict

iso-2022-jp-3-strict エンコーディングであり、X 0208 範囲の文字は X 0208 として出力される。入力では自動判定される。 出力時、G0 = GL は JIS X 0201 Roman、 G1 は JIS X 0201 かな、G2 は iso-8859-1、G3 は X 0213:2000 第二面となる。
jis-x0213-2004, iso-2022-jp-2004

iso-2022-jp-3(2004) の十文字追加対応。Unicode 文字対応は変更していない。 出力時、G0 = GL は JIS X 0201 Roman、 G1 は JIS X 0201 かな、G2 は iso-8859-1、G3 は X 0213:2004 第二面となる。
oldjis

iso-2022-jp エンコーディングの、JIS X 0208:1978 (いわゆる旧 JIS) である。 入力では --input-detect-jis78 指定時のみ自動判定される。G0 = GL は JIS X 0201 Roman、G1 は JIS X 0201 かな、G2 は iso-8859-1、G3 は X 0212 補助漢字となる。
euc-jp, euc

EUC エンコーディングで、JIS X 0208:1997 コードである。 G0 = GL は ASCII、G1 は JIS X 0208、 G2 は JIS X 0201 かな、G3 は X 0212 補助漢字となる。
euc-x0213, euc-jis-2000

EUC エンコーディングで、JIS X 0213:2000 コードである。 G0 = GL は ASCII、G1 は JIS X 0213:2000 第一面 G2 は JIS X 0201 かな、G3 は X 0213 第二面となる。
euc-jis-2004

EUC エンコーディングで、JIS X 0213:2004 コードである。 十文字追加対応。Unicode 文字対応は変更せず。G0 = GL は ASCII、G1 は JIS X 0213:2004 第一面、G2 は JIS X 0201 かな、G3 は X 0213 第二面となる。
euc-kr

EUC エンコーディングで韓国語 KS X 1001 コードである。 G0 = GL は KS X1003、G1 = GR は KS X1001、G2 と G3 は未設定である。
euc7-kr iso-2022-kr

7bit EUC エンコーディングで韓国語 KS X 1001 コードである。iso-2022-kr (rfc1557) 準拠。 G0 = GL は KS X1003、G1 は KS X1001、G2 と G3 は未設定である。
euc-cn

EUC エンコーディングで簡体字中国語 GB 2312 コードである。 G0 = GL は ASCII、G1 = GR は GB2312、G2 と G3 は未設定である。
euc7-cn

7bit EUC エンコーディングで簡体字中国語 GB 2312 コードである。 G0 = GL は ASCII、G1 は GB2312、G2 と G3 は未設定である。
hz

HZ エンコーディングを用いた簡体字中国語 GB 2312 コードである。 G0 = GL は ASCII、G1 = GR は GB2312、G2 と G3 は未設定である。
gb12345

EUC エンコーディングで伝統字中国語 GB 12345 コードである。 G0 = GL は ASCII、G1 は GB12345、G2 と G3 は未設定である。
gbk

gbk 拡張 GB 2312 簡体字中国語コードである。Windows-936 に同じ。 G0 = GL 対応部は ASCII である。
gb18030

GB18030 簡体字中国語コードである。ibm-1392, Windows cp54936 に同じ。 G0 = GR は ASCII であり G1 = GR は GB18030、G2 と G3 は未設定である。
big5

伝統字中国語 BIG5 (倚天方式) コードである。EURO マップを含む。 Latin 部は ASCII を用いる。
big5-cp950

伝統字中国語 BIG5 (MS cp950) コードである。Latin 部は ASCII を用いる。
big5-hkscs

伝統字中国語 BIG5 に香港増補字符集 (HKSCS) を加えたコードである。 Latin 部は ASCII を用いる。
big5-2003

伝統字中国語 BIG5-2003 コードである。Latin 部は ASCII を用いる。
big5-uao (experimental)

伝統字中国語 Big5-UAO (http://uao.cpatch.org) コードである。 Latin 部は ASCII を用いる。
euc-tw

伝統字中国語 CNS11643 第一面、第二面 の EUC エンコーディングである。 G0 = GL は ASCII、G1 は CNS11643 第一面、G2 は CNS11643 第二面、G3 は未設定である。
VISCII (experimental)

ベトナム語 rfc1456 規定の VISCII コードである。TCVN-5712 ではない。
VIQR (experimental)

ベトナム語 rfc1456 規定の VISCII-viqr エンコードである。
sjis

シフト符号化エンコーディングで、JIS X 0208:1997 コードである。 いわゆるシフト JIS である。cp932 では無いことに注意。入力側では NEC/ IBM 拡張漢字部を認識し、出力では使用しない。 また、ユーザ定義外字はすべて未定義とする。 Latin 部は JIS X 0201 Roman を用いる。

sjis-x0213, shift_jis-2003 シフト符号化エンコーディングで、JIS X 0213:2000 コードである。 Latin 部は JIS X 0201 Roman を用いる。
sjis-x0213-2004, shift_jis-2004

シフト符号化エンコーディングで、JIS X 0213:2004 コードである。 十文字追加対応。Unicode 文字対応は変更せず。 Latin 部は JIS X 0201 Roman を用いる。
sjis-cellular (experimental)

シフト符号化エンコーディングで、JIS X 0208 に NTT Docomo/Vodafone(SoftBank) 携帯絵文字対応マッピングを追加したもの。vodafone 絵文字入力は自動判定される。 Latin 部は JIS X 0201 Roman を用いる。出力はサポートしていない。
cp932 cp932w

Microsoft 社 cp932 マッピングされたシフト符号化エンコーディングである。 Latin 部は ASCII を用いる。kana_enbl が自動的に有効になる。
cp50220, cp50221, cp50222

Microsoft 社 cp50220, 50221, 50222 マッピングされた JIS 類似エンコーディングである。Windows 既定の外字部が有効であるため、iso-2022 互換ではない。Latin 部の初期設定は ASCII である。 本コードを入力に指定した場合、cp50220, 50221, 50222 のいずれの入力も可能。 また、下記のカナ出力制御は有効で、設定で cp50220 指定で cp50221, 50222 などの出力も可能である。
cp51932

Microsoft 社 cp932 マッピングされた EUC エンコーディングである。 Latin 部は ASCII を用いる。 kana_enbl が自動的に有効になるが、補助漢字は明示的には有効にならない。
oldsjis

シフト符号化エンコーディングで、JIS X 0208:1978 コードである。 いわゆる旧 JIS ベースのシフト JIS である。cp932 では無いことに注意。 Latin 部は JIS X 0201 Roman を用いる。
johab

KS X1001 Johab である。Latin 部は KS X1003 を用いる。
uhc

韓国語 UHC (cp949)である。Latin 部は ASCII を用いる。
unicode, ucs2, utf16, unicodefffe

UTF-16 転送形式の Unicode(v5.0) である。unicode, ucs2, utf16 では入出力はリトルエンディアンで、unicodefffe はビッグエンディアンとなる。 BOM が --disable-endian-mark を指定しない限り付けられる。 また、--limit-to-ucs2 を指定しない限り、サロゲートペアを用いた UTF-32 範囲の値が出力される。細かいコード設定は以下オプションを参照のこと。 注意:本コードは、Ruby/Perl エクステンションでは使用できない。 当該コードを指定した場合にはエラーとなる。
utf8

UTF-8 転送形式の Unicode(v5.0) である。出力の BOM は --enable-endian-mark を指定しない限り付けられない。また、--limit-to-ucs2 を指定しない限り、 UTF-32 範囲の値が出力される。標準では CESU-8 入力は受け付けない。 --enable-cesu8 オプションを指定することにより、入力として CESU-8 を受付可能である。CESU-8 の出力はサポートしていない。 また、UTF-8 入力ではエンディアンマーク (BOM) は有無にかかわらず無視される。
utf7

UTF-7 転送形式の Unicode(v5.0) である。 出力範囲は U+10000 未満の範囲に限られ、それ以上は未定義扱いである。 UTF-7 入力ではエンディアンマーク (BOM) は有無にかかわらず無視される。
keis (experimental)

日立 KEIS 83/90 コードである。出力可能な文字集合範囲は JIS X 0201, X 0208 に限られる。試験的サポートである。
jef (experimental)

富士通 JEF である。基本部かつ入力のみの試験的サポートである。
ibm930 (experimental)

IBM DBCS 日本語および EBCDIC Kana の組み合わせである。
ibm931 (experimental)

IBM DBCS 日本語および EBCDIC latin (cp037) の組み合わせである。
ibm933 (experimental)

IBM DBCS+SBCS 韓国語である。
ibm935 (experimental)

IBM DBCS+SBCS 簡体字中国語である。
ibm937 (experimental)

IBM DBCS+SBCS 伝統字中国語である。
koi8r

ロシア語 KOI-8R コードである。
cp1251

Windows cp1251 コードである。
transparent

入力の文字を無変換で透過する。改行文字変換、folding を含む一切のコード制御指定は無視される。

ショートカット

以下の各行のオプションは同じ意味である。
-n -j --oc=jis
-s -x --oc=sjis
-a -e --oc=euc-jp
-q --oc=ucs2
-z --oc=utf8
-y --oc=utf7
-k --oc=keis
-A -E --ic=euc-jp
-N --ic=jis
-S -X --ic=sjis
-Q --ic=ucs2
-Y --ic=utf7
-Z --ic=utf8
-K --ic=keis

JIS/ISO 2022 コード固有制御

以下は入力が ISO-2022 に沿ったコード系である時のみ有効である。 以下の設定は、入力として指定したコード系で決まる値を、オプションの指定順序によらず上書きする。 .TP --set-g0=コードセット名 iso-2022 系のコードの入力時に G0 にあらかじめセットしておくコードを指定する。 初期状態では、GL に G0 が設定されている。
--set-g1=コードセット名
iso-2022 系のコードの入力時に G1 にあらかじめセットしておくコードを指定する。 初期状態では、GR に G1 が設定されている。
--set-g2=コードセット名
iso-2022 系のコードの入力時に G2 にあらかじめセットしておくコードを指定する。
--set-g3=コードセット名
iso-2022 系のコードの入力時に G3 にあらかじめセットしておくコードを指定する。

各プレーンに指定できるのは、以下のとおり。'o' が指定可能なことを、'x' が指定不可能であることを意味する。 Unicode 関連コードセットでは、このオプションは無視される。 また、ISO-2022 以外のコード系ではサポートされていない。結果は不定となる。

g0 g1 g2 g3    コードセット名   説明

o o o o     ascii ANSI X3.4 ASCII

o o o o     x0201 JIS X 0201 (latin part)

x o o o     iso8859-1 ISO 8859-1 latin

x o o o     iso8859-2 ISO 8859-2 latin

x o o o     iso8859-3 ISO 8859-3 latin

x o o o     iso8859-4 ISO 8859-4 latin

x o o o     iso8859-5 ISO 8859-5 Cyrillic

x o o o     iso8859-6 ISO 8859-6 Arabic

x o o o     iso8859-7 ISO 8859-7 Greek-latin

x o o o     iso8859-8 ISO 8859-8 Hebrew

x o o o     iso8859-9 ISO 8859-9 latin

x o o o     iso8859-10 ISO 8859-10 latin

x o o o     iso8859-11 ISO 8859-11 (TIS 620 (Thai))

x o o o     iso8859-13 ISO 8859-13 latin

x o o o     iso8859-14 ISO 8859-14 latin

x o o o     iso8859-15 ISO 8859-15 latin

x o o o     iso8859-16 ISO 8859-16 latin

x o o o     tcvn5712 TCVN 5712 (Vietnamese)

x o o o     ecma113 ECMA 113 Cyrillic

o o o o     x0212 JIS X 0212:1990 補助漢字

o o o o     x0208 JIS X 0208:1997

o o o o     x0213 JIS X 0213:2000 Plane 1

o o o o     x0213-2 JIS X 0213:2000 Plane 2

o o o o     x0213n JIS X 0213:2004 Plane 1

o o o o     gb2312 Simplified Chinese GB2312

o o o o     gb1988 Chinese GB1988(latin)

o o o o     gb12345 Traditional Chinese GB12345

o o o o     ksx1003 Korian KS X 1003(latin)

o o o o     ksx1001 Korian KS X 1001

x o o o     koi8-r Cyrillic KOI-8R

x o o o     koi8-u Ukrainean Cyrillic KOI-8U

o o o o     cns11643-1 伝統字中国語 CNS11643-1

x o o o     viscii-r RFC1496 VISCII (右半面)

o o o o     viscii-l RFC1496 VISCII (左半面)

x o o o     cp437 Microsoft cp437 (US latin)

x o o o     cp737 Microsoft cp737

x o o o     cp775 Microsoft cp775

x o o o     cp850 Microsoft cp850

x o o o     cp852 Microsoft cp852

x o o o     cp855 Microsoft cp855

x o o o     cp857 Microsoft cp857

x o o o     cp860 Microsoft cp860

x o o o     cp861 Microsoft cp861

x o o o     cp862 Microsoft cp862

x o o o     cp863 Microsoft cp863

x o o o     cp864 Microsoft cp864

x o o o     cp865 Microsoft cp865

x o o o     cp866 Microsoft cp866

x o o o     cp869 Microsoft cp869

x o o o     cp874 Microsoft cp874

x o o o     cp932 Microsoft cp932 (Japanese)

x o o o     cp1250 Microsoft cp1250 (中欧)

x o o o     cp1251 Microsoft cp1251 (Cyrillic)

x o o o     cp1252 Microsoft cp1252 (Latin-1)

x o o o     cp1253 Microsoft cp1253 (Greek)

x o o o     cp1254 Microsoft cp1254 (Turkish)

x o o o     cp1255 Microsoft cp1255

x o o o     cp1256 Microsoft cp1256

x o o o     cp1257 Microsoft cp1257

x o o o     cp1258 Microsoft cp1258

--euc-protect-g1
EUC 時、ISO-2022 に従う G1 に対するコードセットの呼び出しを抑止する。G1 への呼び出しシーケンスは無視される。
--add-annon
JIS X 0208:1990 を呼び出す際に、1990年版を示すレビジョンシーケンスを追加する。
--input-detect-jis78
JIS X 0208:1978 (C6226:1978) と JIS X 0208:1983/1990 を区別する。 既定値は、この二つのコードセットとも JIS X 0208:1983/1990 と見なされる。JIS 入力時のみ有効。

拡張オプション

X-0212 (補助漢字) 制御

--x0212-enable
X 0212 補助漢字を利用する。このオプションを指定しない場合、 JIS/EUC 出力時補助漢字は未定義扱いとなる。 KEIS 及び Shift-JIS 出力の場合、このオプションは無視され、常に未定義扱いとなる。 Unicode 出力の場合、このオプションは無視され X 0212 補助漢字は常に有効になる。 補助漢字を使用しないコードセットでは意味を持たない。 このオプションは従来互換のためサポートされており、利用は非推奨。

Unicode 固有制御

--use-compat --suppress-compat
skf では、Unicode の互換プレーン (U+F900 - U+FFFD) を既定では内部コードとしても使用せず、所定の異体字または未定義文字に変換する。この動作を --suppress-compat は有効とし、--use-compat は抑止する。 既定値は有効である。 一部のコードセットでは、この機能はコードセット属性として有効化または抑止される。 コードセットの記載を参照されたい。
--use-ms-compat
内部で Unicode に変換する際のマップを JIS X 0208 ではなく Microsoft CP932 として扱う。通常 Unicode 出力を指示しているときのみ意味を持つ。 これは Windows の WideCharToMultiByte と互換であることは意図していない。同関数と互換な事を指定する場合は、codeset として cp932w を指定する。
--use-cde-compat
Unicode 出力時、JIS X 0208 から Unicode への変換時に CDE (Common Desktop Environment) 仕様互換変換を行う。
--little-endian
Unicode 出力を指示しているとき、出力をリトルエンディアンにする。既定値である。
--big-endian
Unicode 出力を指示しているとき、出力をビッグエンディアンにする。
--disable-endian-mark --enable-endian-mark
UTF-16/32 または UTF-8 出力 (-q) を指示しているとき、エンディアン指示キャラクタUTF-16/32 では既定値は BOM 有効、UTF-8 では既定値は BOM 無効である。
--input-little-endian
Unicode 入力を指示しているとき、入力をリトルエンディアン扱いにする。 入力中のエンディアン指定キャラクタが優先される。既定値である。
--input-big-endian
Unicode 入力を指示しているとき、入力をビッグエンディアン扱いにする。 入力中のエンディアン指定キャラクタが優先される。
--endian-protect
入力中のエンディアン指定キャラクタを無視する。 既定値はオフ (無視しない) である。
--use-replace-char
skf の出力時のデフォールト未定義文字コードはゲタであるが、それに代わり Unicode 未定義文字コード U+fffc を使う。既定値はオフである。下記参照。
--limit-to-ucs2
出力コードを UCS2 で表現できる範囲に制限する。すなわち、U+10000 以上を使用しない。既定値はオフ、すなわち U+10000 以上を使用する。
--disable-cjk-extension
CJK extension A/B 領域を未定義扱いにする。既定値はオフ (未定義ではない) である。
--enable-cesu8
UTF-8 入力時に CESU-8 を受付可能にする。既定値はオフ (受付拒否される)。 UTF-8 以外の入力 codeset に対しては、単に無視される。
--non-strict-utf8
UTF-8 入力時のチェックをゆるめ、不正なエンコーディングがされた UTF-8 の変換を有効にする。何をしているのか十分理解の上利用のこと。
--enable-nfd-decomposition --disable-nfd-decomposition
Unicode 正規分解結果を出力する/しない。既定値は出力しない。
--enable-nfda-decomposition --disable-nfda-decomposition
Apple 社互換の Unicode 正規分解結果を出力する/しない。既定値は出力しない。

コードセット/ベンダ依存文字制御

skf では、入力の JIS X 0208 未定義部の外字は、Microsoft CP932 コードセットであることを仮定している。以下はそれに対する制御スイッチである。 注意して欲しいのは CP932 扱いなのはあくまでも未定義部であり、X 0208 に定義がある部分は X 0208 規定のコードとして処理される。本項のオプションは、 --disable-chart 以外は日本語入出力時のみ有効である。
--use-apple-gaiji
入力コードが cp932, cp943, JIS X 0208 の場合、入力の外字 0x29-0x2f 部が Macintosh (KanjiTalk 7 以降) 互換であることを指定する。 他の外字関係オプションと排他であり、後に指定したものが有効になる。
--dsbl-ibm-gaiji --dsbl-nec-gaiji
入力の外字 89区-92区部の IBM DOS/V /NEC 互換外字を無効化する。 他の外字関係オプションと排他であり、後に指定したものが有効である。
--disable-chart
文字罫線を 1978 年度部分を含め、すべて透過しない。 このオプションは他の外字関係オプションと排他ではない。また、入力が JIS, EUC または cp932/Shift_JIS 以外では無視される。

各種コードセット依存制御 (入力コード判定)

skf では、ic で明示的に入力コードセットが指定されない場合は、自動判定を試みる。 自動判定で判定困難な場合の動作はその際の状態に依存するが、矛盾しない限り使われる既定のコードセットは定義されている。 配布キットでの標準値は euc-jp.open であるが、コンパイル時に変更が可能で、-h オプションにより既定値を知ることができる。 また、以下は自動判定時に判定を制御するためのスイッチである。既定値は、すべてオフである。
--old-nec-compat
入力で、古い NEC 文字エスケープシーケンス (ESC-H, ESC-K) を有効にする。 configure 実行時にコンパイルオプション --enable-oldnec が必要。
--no-utf7
入力が UTF-7 で無いことを指定する。このオプションにより、入力が UTF-7 であるかどうかのテストが抑止される。
--no-kana
入力に JIS X 0201 かなが含まれないことを指定する。同時に、Unicode の半角 かな部も使っていないものとする。これはあくまでも判定処理への情報であり、これらのカナが実際に含まれていた場合は、判定コードセットに従った所定の処理がされる。

出力関係制御

skf の規定の出力先は標準出力であるが、nkf 同等の既存ファイルのコードを変換する機能も提供している。

--overwrite --in-place
入力として指定されたファイルを、指定のコードセットに変換する。--overwrite では変更時刻は元のファイルのものが維持される。

skf には、様々なローカルの環境に合わせた文字出力機能が実装されている。 その多くは、この項で説明する拡張オプションで制御する。

--use-g0-ascii
コードセット指定を上書きして、出力の G0(=GL) を ASCII にする。

X-0201 カナ出力制御

skf は X 0201 カナ部を、以下のカナ出力オプションを指定しない場合は、出力時 X 0208 カタカナに変換する。 X 0201 カナを使う場合は以下のオプションを指定する。 但し、Unicode で相当するいわゆる半角かなの出力は、以下スイッチではなく --use-compat で制御される。 本項のオプションは、日本語以外が出力コードセットとして指定されている場合は意味を持たない。
--kana-jis7
X 0201 カナを SI/SO コードによって呼び出し、使用する。出力が JIS または cp50220 の時のみ有効。
--kana-jis8
X 0201 カナを 8ビットコードの右半面に呼び出し、使用する。 出力が日本語シフト符号化表現時と JIS 時のみ有効。
--kana-esci --kana-call
X 0201 カナを ESCAPE-(-I によって呼び出し、使用する。出力が JIS 時のみ有効。
--kana-enable
出力符号系が EUC または cp51932 時 X 0201 カナを SS2 によって呼び出し使用する。 ShiftJIS 時は X 0201 カナをそのまま透過する。cp50220 または JIS 指定時は --kana-call に同じ。

ラテン文字制御

skf は、Unicode(TM) 系出力の時、ascii にないラテン文字はそのまま透過するが、 その他の出力コード系を指定した場合には、変換を試みる (KEIS 時は html/TeX への変換以外は無効である)。変換ルールは、以下の順で試みられる。

(1) 出力コード系に対象文字がある場合には、それを出力する。

(2) --convert-html などの html/sgml 変換が指定されているばあいは、 実体参照または数値文字参照により出力される。

(3) --convert-tex が指定されており、当該文字が TeX で定義されている場合は、それを出力する。

(4) 文字の組み合わせで表現できる (そのような慣行がある) 場合は、 その文字の組み合わせを出力する。

(5) 置換文字を出力する。-I を指定した場合、同時に警告が出力される。

項番 (5) で使用される置換文字に関しては、以下のとおり。

(1) Unicode(TM) 系出力で、--use-replace-char が指定されている場合は Unicode 未定義文字コード U+fffc を使う。

(2) げた (〓) 文字のある文字集合 (Unicode, JIS, GB2312 等) については、げた文字を用いる。

(3) 黒四角文字のある文字集合 (BIG5 等) については、この文字を用いる。

(4) それ以外の文字集合の場合は、'.' を用いる。

--convert-html --convert-sgml
指定した出力文字集合ないにない文字を、html/sgml/xml 表現の文字実体参照に書き換える。 未定義の場合には、数値文字参照呼び出し (10 進) で出力する。 出力文字集合で既定義のものは、--html-sanitize が指定されているとき以外は html として許されないものについても何もしない。 この二つのオプションは同じ動作をする。
--convert-html-decimal
ラテン文字を html/sgml 表現の、数値文字参照呼び出し (10 進) に置き換える。
--convert-html-hexadecimal
ラテン文字を html/sgml 表現の、数値文字参照呼び出し (16 進) に置き換える。
--convert-tex
ラテン文字を、TeX 表現に書き換える。
--use-iso8859-1
出力時、iso-8859-1 で定義されている文字を iso-8859-1 を右半面 & G1 に呼び出して使用する。定義されていないものに関しては何もしない。
--use-iso8859-1-right
出力時、iso-8859-1 で定義されている文字を iso-8859-1 を G1 に呼び出して 7-bit コード系で使用する。定義されていないものに関しては何もしない。 iso-2022 系の出力コードセット指定時のみ有効である。

入出力符号化制御

--decode=エンコード方式
--encode=エンコード方式 入力/出力が符号化されていることを指定する。デコードで指定できるのは、hex, mime, mime_q, mime_b, rot, uri, ace, rfc2231, base64, qencode であり、順に CAP 符号、MIME エンコーディング (自動判定)、MIME Q エンコーディング、MIME B エンコーディング、 rot13/47 符号、URI 文字参照、PUNYCODE、RFC2231 ファイル名, base64 エンコーディング, q エンコーディングを意味する。 エンコードで指定可能なのは、'hex', 'mime_b', 'mime_q', 'uri', 'ace', 'cap', (例: UTF-7)、および EBCDIC 系、B-right/V 系のコードセットとは両立せず、 エンコード指定が無効化される。 URI 文字参照では、文字実体参照は対応していない。 このデコード指定は一度に一つしか指定できず、最後に指定したものが有効である。 MIME エンコーディングでは、ヘッダ指定が優先される。また、MIME デコードを指定した場合に地の文の判定がされていなかった場合、地の文のコードは EUC-JP が仮定される。また、rot47 は日本語コード、他のエンコーディングでは入力が ascii でなければならない。特に入出力コードが UTF-16(UCS2) の場合、本オプションは無視される。
--mime-ms-compat
このオプションを指定した場合、MIME-B/Q および rfc2231 デコードで指定された iso-2022-jp を cp50220 として、 euc-jp を cp51932 として、Shift-JIS を cp932w として扱う。 他のコードセットについては何もしない。MIME および rfc2231 以外に対しても何もしない。

改行コード制御

--lineend-thru
改行コードを変更しない。^Z についてもそのまま出力する。これが既定値である。
--lineend-cr --lineend-mac
改行コードを CR にする。同時に ^Z を削除する
--lineend-lf --lineend-unix
改行コードを LF にする。同時に ^Z を削除する
--lineend-crlf --lineend-windows
改行コードを CRLF にする。同時に ^Z を削除する
-F[行長[-禁則]]
-f[行長[-禁則]] -f[行長[+禁則]]
「行長」で指定された文字数で改行する。 f はテキスト中の改行を削除し、F は削除しない。 ぶら下がり禁則、追い出し禁則の両方をサポートし、ぶら下がりの最大数は「禁則」で指定される。 ともに指定しなければ標準値となる。 「行長」の標準値は 66 で、指定可能な最大数は 999である。 「禁則」の標準値は 5 で、指定可能な最大値は 10 である。また、 skf の既定では、f 指定時に文章節の自動判定を行い一部の改行を残す動作となるが、二番目の '+' の指定により当該判定を抑止する。また、以下の nkf-compat オプションの指定により、以下のように動作が変更される:
(1) 既定時の行長の値 が 60, 禁則の値が 10 となる
(2) ascii 英数字がぶら下げの約物として扱われる

互換機能

--nkf-compat
引き続くオプションを nkf オプションとして解釈する。nkf の全オプションが実装されているわけではないが、nkf 2.0 の -w オプションは有効である。また、fF オプションの動作が変更され、--disable-space-convert が自動セットされる。 これ以外にも nkf 互換の動作をおこなうよう内部動作が幾つか変更される。また nkf の多くのオプションがサポートされており、一部はこのオプション下でのみ動作するものもある。下記 BUGS 参照のこと。
--skf-compat
引き続くオプションを skf のオプションとして解釈する。こちらが既定値である。

各種制御

--disable-space-convert --enable-space-convert
skf は標準で JIS X 0208 間隔を ascii 空白二個に変換するが、disable はこれを抑止し、enable は有効化する。既定値は有効となっている。
--html-sanitize
入力中、HTML 等として不適当な文字をエスケープする。具体的には、"!#$&%()/<>:;?' の各文字が文字実体参照にエスケープされる。JIS の漢字を構成する文字等はエスケープされないので、理解して利用のこと。
--filewise-detect --force-reset
入力ファイルを複数指定した際に、ファイル毎にコードを個別判定する
--linewise-detect
一行毎にコードを個別判定する。コード認識能力は低下するので、注意して利用の事。
--inquiry
入力ファイルのコード判定だけを行う。コード判定後結果を出力して終了する。 --filewise-detect を自動セットする。複数入力ファイルが指定されている場合は、 --show-filename が自動セットされる。
--hard-inquiry
inquiry に加えて入力の改行コードも報告する。 複数ファイル名を与えた場合には--show-filenameが自動的に有効になる。
--suppress-filename
--inquiry を指定している際に、ファイル名を出力しない。--show-filename より優先される。
--show-filename
--inquiry を指定している際に、ファイル名を出力に追加する。
--invis-strip
invis strip mode. ISO-2022処理に関係しない esc 制御文字列を透過しない。 制御文字は skf が握りつぶす。
-v --version
バージョンとコンパイルオプション情報を出力する。
-I
入力に処理対象外の文字が含まれていた場合に警告を出す。
-h --help
簡単なヘルプを表示する。
--reset
これより前に指定したすべての拡張オプションをクリアする。
--show-supported-codeset
サポートしている入出力コードセット名を出力する
--show-supported-charset
サポートしている出力キャラクタセット名を出力する
-%[debug_level]
skf のデバッグ機能を有効にする。デバッグレベルは一文字の数字で、 大きい方が多くのデバッグ情報を出力する。 このオプションはコンパイル時のオプション --enable-debug が必要である。

FILES

/usr/(local/)share/skf/lib (Unices)
/Program Files/skf/share/lib (MS Windows)

skf 外部コードセット変換テーブルディレクトリ。skf が見ているディレクトリ位置は、-h オプションで知ることができる。

AUTHOR

       かねこ                       efialtes@sourceforge.jp

       元のnkf: 市川 至  ichikawa@flab.fujitsu.co.jp


X 0213:2000 漢字コード表は earthian@tama.or.jp さんの仕事に由来します。
文字マッピングは、他にも様々なソースからのものを利用しています。詳細は copyright 文書に記載されています。

ACKNOWLEDGE (敬称略)

日向(HKE)、芦沢(CRL)、国本(SDL)、猪股(SDL)、大原(京大)、Jokagi(elf2000)、 成瀬(at sourceforge.jp) の皆さんに感謝。

BUGS AND LIMITATION

(1) EUCコードと JIS の混在コードは処理可能、またマイクロソフト JIS コードと JIS の混在コードは Locking/Single シフトと G2/G3 処理を抑止しているという 制限付きで処理可能だが、その際は入力コードをマイクロソフトJISコードもしくは EUC コードと明示指定すること。自動判定では混在コードが MS-JIS と EUC のいずれと判定されるかは予測できない。
やむを得ない場合には、--linewise-detect Option で3コードが混在している場合でも対処できるが、コード判定能力は低下する。 事前に期待されるコードセットが分かっている場合は、明示的に指定することを推奨する。

(2) UCS2/UTF-16 の自動認識は通常できるが、明示指定を推奨する。 UTF-8/7 も同様で、UCS2/UTF-16 より正しく認識されない可能性が高い。 UCS4 はサポートしていない。サロゲートペアは認識し、言語情報部に対応している。 また、合成文字はそのまま出力し、正規化は行わない。

(3) skf-1.9 は ISO-2022 シーケンスを制御文字呼び出しを除く範囲でサポートしているが、相違点がいくつかある。

  i) GL 0x20 は常に空白である。GL 面に 96 文字文字集合が呼ばれている場合も同様。

  ii) 制御文字集合呼び出し (C1, C2) は無視される。

  iii) G0 に skf がサポートしていない文字集合を呼んだとき、ascii  に戻しロッキングシフト、シングルシフトは解除する。G1-G3 への呼び出しは無視される。 プライベート文字集合の呼び出しも同じ扱いとする。

  vi) 96 文字複数バイト集合呼び出しは無視される。

  v) ISO-2022 系コードセットから UTF-8, UTF-16 に対するコーディングシステム呼び出しは可能で、標準戻りで元のコードセットに復帰する。 他の組合せの場合の呼び出しと標準戻りは無視される。

  vi) 携帯電話絵文字などの関係で、IANA と無関係の私用コードセットが幾つか定義されており、呼び出し可能である。

(4) UTF-7 を自動検出している関係で、純粋に ASCII だけのテキストでおかしな挙動をする可能性がある。 その場合は、--no-utf7 を指定してほしい。

(5) エラー出力のコード系は LOCALE 指定によるが、 標準エラーと標準出力を同じストリームにリダイレクトしたときのことは考慮していない。使い方で何とかしてほしい。

(6) 1.91 以降の skf では、KEIS/JIS X 0213 の拡張漢字集合の変換には Unicode 3.2 の範囲を一杯に用いているため、JIS への変換時に一部の異体字は未定義になる。 また、これと関連して Unicode CJK compatibility 領域にある漢字は、use-compat 未指定時にコードセットによっては未定義になる。

(7) JIS X 0207:1979 は未サポート。同仕様に沿った制御コードを含む場合は何が起きるかわからない。 JIS X 0211:1987 はサポートしているが、 --invis-strip 未指定時の端末制御シーケンスの透過性は端末に依存する。 vt100 の主要なものは透過だが、一般端末については未確認であるため、telnet 等からの標準入力のフィルタとして利用する場合は要注意である。

(8) バッファ抑止指定 (-u) がされている場合にも、変換に関係するバッファ処理 (例 MIME) は抑止されない。

(9) skf-1.9x で認識される言語は iso639-1 (Alpha 2) で定義されたものだけである。iso639-2 はサポートしていない。

(10) UCS2/UTF-16 コードは、言語エクステンションでは使用できない。 これは各言語と SWIG の渡し関連の制約である。 このため、指定した場合は明示的にエラーとしている。

(11) skf-1.9x では Macintosh の RLO 方向指定文字の属性を保持しない。 従って、これらを用いたコードセットはサポートしない。

(12) UTF-7 では RFC 違反だが、入力のサロゲートペアは受け付ける。出力は上記の通り行わない。

Notes

(1) 拡張オプション系は skf-1.9 ですべて変更されたので、使っている場合は 見直してほしい。他に、nkf の -B, -@, -r の各オプションを削除した。-r はデコードのみ `--decode=rot' で代替可能である。

(2) skf は nkf (PDS) 版から派生したプロジェクトではあるが、元の nkf のコードは含まれていない。copyright のみ残してある。

(3) JIS X 0213:2000 文字テーブルは、JIS X 0213 InfoCenter の earthian@tama.or.jp さんのテーブルを、かねこが修正したものである。

(4) v1.9 からコードセットの既定値を X 0208:1997 + Microsoft Windows 互換外字に変更した。

(5) 外字や Unicode 標準などに含まれる単位記号のリガチャは skf-1.30 より JIS X 0124:1981 準拠第一形式を吐くように直した。 昔は形を合わせるためギリシャ文字などを用いていたが、 現在はそのような処理は意図的に行なっていない。 これ以外にも、一対一で表示できない文字集合を出力に指定した場合、文字数・文字長が変わる場合があるため注意が必要である。

(6) 1バイト文字系の文字セット、例えば ASCII などは認識され、所定の変換をされる。

(7) skf-1.9x は、外字関係の処理は skf 1.3 以前と全く異なる。 --use-nec-gaiji, --use-ms-gaiji, --use-ibm-gaiji は同じ動きをする。また、外字透過はできない。 ASCII と JIS X 0201 混在時に各コードの固有領域は、可能な場合には出力にも反映される。

(8) skf-1.9 では、EUC は完全に ISO-2022 の派生系コードとして扱っているので、 所定のシーケンスで G0/G1 を置き換えられる。この際に skf では fj の暗黙の了解により、G0,G1 を置き換えると左右半面のコード系が差し代えるため、他の EUC を扱う漢字フィルタとは違う動きをするので注意されたし。 G1 の置き換えは、 --euc-protect-g1 で抑止できる。

(9) iso-8859 を G1 に iso-2022 規定の手順で呼び出した場合に G1 には iso-8859 がセットされるが、この状態で G0 に JIS X 0201 を呼び出しても G1 には手を付けない (iso-2022 の規定通り)。 G0/G1 に一括して JIS X 0201 を戻す方法はない。

(10) --inquiry で出力されるのは、skf がこの入力をどのコード系として処理するかであり、入力判定が下った時点で以降の文字は読み捨てられる。 このため、判定が甘いことがある。

(11) EBCDIK 系の Code が一応サポートされているが、拡張漢字の処理と小文字処理 (EBCDIK) が (私があまり必要性を感じていないこともあり) 試験的サポートである。 もちろんレポート・修正していただけるなら大歓迎である。

(12) EUC の kana-call オプションでは、G2 のコードセットがかなであることを仮定する。このオプション指定時に G2 がカナであることを動的に確認はしないし、G2 にカナを改めて設定することもない。

(13) v1.97 でベースとした Unicode 規格はバージョン 5.0 である。

(14) nkf の -i, -o オプションは nkf-compat モード時のみサポートしているが、 iso-2022-jp および類似コードセットでのみ意味を持ち、 コードセットの既定値の設定とは無関係である。このオプションは、skf では強く非推奨。

(15) iso-2022 系のコードセットの入力側の G2, G3 は、自動検出時には iso-2022-jp と同じコードセットが、明示指定時には出力側と同じコードセットが指定される。 暗黙指定を仮定して G2, G3 をシングルシフトで呼び出した際には変換結果が異なるため、注意。

(16) RFC2045 仕様に従い、encoding 時にロッキングシフト、シングルシフトは見ていない。 decode 結果に対するシフトは有効である。

(18) Windows-31J (cp932) では仕様上 latin 部は JIS X 0201 Roman ということになっているはずであるが、現実の Windows の動きは ASCII であるため、skf では ASCII を使っている。 1.95 ではこれを変更するオプションは提供しない。

(19) nkf 互換機能: nkf との差違を下記に示す。
1) -B*, --prefix, --fb-* の一部、--no-cp932ext/--no-best-fit-chars 等は未サポート。-B* はそもそもオプション無し (エラーを吐く)。他は互換性を保証しない。
2) rot エンコーディングはサポートされていない。また rot デコードは他のデコードと両立しない。rot を指定した場合、他のデコードは無視される。
3) MSDOS でのオプション/コンパイルはサポートされない。
4) MIME まわりでエラー処理、折り返し処理に多数の相違点がある。
5) 改行回り、特に改行が混在するテキストでは互換には動作しない。
6) nkf で行っている、EUC/JIS 時の SJIS 自動呼び出しは仮対策のみ。 そもそもこの手のことがしたかったら -- linewise-detect を使うこと。

(20) 非公開オプションが多数あるが、試験的なものと考えられたい。

Notice

Unicode is a registered trademark of Unicode, Inc. Microsoft and Windows are registered trademarks of Microsoft corporation. Apple and Macintosh are registered trademarks of Apple Computer, Inc. Vodafone is a trademark of Vodafone K.K.

本マニュアルおよび文書中の会社名及び製品名などは、一般に各社の商標または登録商標です。 本マニュアル中では (TM) マークは省略しています。