How to use skf - simple kanji filterSKF(1) SKF(1) NAME skf - シンプル漢字フィルタ(v1.97) 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/Voda‐ fone(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 に沿ったコード系である時のみ有効である。以下の 設 定 は、入力として指定したコード系で決まる値を、オプションの指定順序によ らず上書きする。 --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 と互換であ る ことは意図していない。同関数と互換な事を指定する場合は、code‐ set として 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 かなが含まれないことを指定する。同時に、Uni‐ code の半角かな部も使っていないものとする。これはあくまでも判 定 処理への情報であり、これらのカナが実際に含まれていた場合は、判定 コードセットに従った所定の処理がされる。 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’, (例: UTF-7)、および EBCDIC 系、B-right/V 系のコードセット と は両立せず、エンコード指定が無効化される。 URI 文字参照では、 文字実体参照は対応していない。このデコード指定は一度に一つしか指 定できず、最後に指定したものが有効である。 MIME エンコーディング では、ヘッダ指定が優先される。また、MIME デコードを指定した場 合 に地の文の判定がされていなかった場合、地の文のコードは EUC-JP が 仮定される。また、rot47 は日本語コード、他のエンコーディングでは 入 力 が ascii でなければならない。特に入力コードが UTF-16(UCS2) の場合、本オプションは無視される。 --mime-ms-compat このオプションを指定した場合、MIME および 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 オプション の 動 作 が 変 更 さ れ 、--dis‐ able-space-convert が自動セットされる。これ以外にも nkf 互換の動 作をおこなうよう内部動作が幾つか変更される。また nkf の多くの オ プションがサポートされており、一部はこのオプション下でのみ動作す るものもある。下記 BUGS 参照のこと。 --skf-compat 引き続くオプションを skf のオプションとして解釈する。こちらが 既 定値である。 --disable-space-convert --enable-space-convert skf は標準で JIS X 0208 間隔を ascii 空白二個に変換するが、dis‐ able はこれを抑止し、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 サポートしている出力キャラクタセット名を出力する 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 の拡張漢字集合の変換には Uni‐ code 3.2 の範囲を一杯に用いているため、JIS への変換時に一部の異体字は未 定義になる。また、これと関連して Unicode CJK compatibility 領域にある漢 字は、use-compat 未指定時にコードセットによっては未定義になる。 (7) JIS X 0207:1979 は未サポート。同仕様に沿った制御コードを含む場合は 何が起きるかわからない。 JIS X 0211:1987 はサポ ー ト し て い る が 、 --invis-strip 未 指定時の端末制御シーケンスの透過性は端末に依存する。 vt100 の主要なものは透過だが、一般端末については未確認であるため 、tel‐ net 等からの標準入力のフィルタとして利用する場合は要注意である。 (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 の earth‐ ian@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.96 でベースとした Unicode 規格はバージョン 5.0 である。 (14) nkf の -i, -o オプションはサポートしているが、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 等は 未サポート 2) rot エンコーディングはサポートされていない。また rot デコードは他の デコードと両立しない。 3) MSDOS でのオプション/コンパイルはサポートされない。 4) MIME まわりでエラー処理、折り返し処理に多数の相違点がある。 (20) 非公開オプションが多数あるが、試験的なものと考えられたい。 Notice Unicode is a registered trademark of Unicode, Inc. Microsoft and Win‐ dows 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) マークは省略しています。 25/JAN/2008 SKF(1) }}} |