SKF(1)

NAME
skf - シンプル漢字フィルタ(v2.10)

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 は言語の機能拡張として、 いくつかの言語のプラグインとして動作するようコンパイルすることも可能である。 これらについての詳細は、添付文書を参照のこと。

上記のとおり、 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 オプションを指定することにより標準値を出力するので確認されたい。

  サポートコードセット
サポートされているコードセットを以下に示す。コードセット名では大文字小文字の違いは無視される。 自分の環境でサポートされているコードセットは --show-supported-codeset で得ることができる。 また、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 koi-8u koi-8u (Ukraina)
o o cp437 MS cp437 (IBM-PC)
o o cp1251 Cyrillic latin MS cp1251
o o cp1252 latin MS cp1252
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/2012)
                      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 o utf8-bom Unicode(TM) UTF-8 (BOM付き)
o o utf7-imap IMAP modified Unicode(TM) UTF-7 (RFC2060)
o o mutf8 Java modified Unicode(TM) UTF-8
o o cesu8 CESU-8 (Unicode Technical Report #26)
x o nyukan-utf-8 日本国入管文字集合(UTF-8)
x o nyukan-utf-16 日本国入管文字集合(UTF-16)
o  x  arib-b24          ARIB B24 8単位符号
o x arib-b24-sjis ARIB B24 シフト符号化表現
x o transparent 透過モード (下記参照)
o x x-iscii-de インド ISCII-91(IS13194:1991)
o x armiscii-8 アルメニア語 ARMISCII 8
o x geostd8 ジョージア語 Geostd8
o x mik ブルガリア語 MIK
o x tscii タミール語 TSCII 1.7
o o locale ロカールに指定された文字集合。下記参照
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 を用いる。出力はサポートしていない。携帯向けの URI表現も自動的には有効にはならない。

sjis-docomo
    シフト符号化エンコーディングで、JIS X 0208 に NTT Docomo 携帯絵文字対応マッピングを追加したもの。 Latin 部は JIS X 0201 Roman を用いる。

sjis-au
    シフト符号化エンコーディングで、JIS X 0208 に AU 携帯絵文字対応マッピングを追加したもの。 Latin 部は JIS X 0201 Roman を用いる。

sjis-softbank
    シフト符号化エンコーディングで、JIS X 0208 に SoftBank 携帯絵文字対応マッピングを追加したもの。 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, utf16, utf16le, unicodefffe
    UTF-16 転送形式の Unicode(v15.0) である。unicode, utf16le では入出力はリトルエンディアンで、unicodefffe, utf16 はビッグエンディアンとなる。 BOM が --disable-endian-mark を指定しない限り付けられる。 また、--limit-to-ucs2 を指定しない限り、サロゲートペアを用いた UTF-32 範囲の値が出力される。細かいコード設定は以下オプションを参照のこと。 注意：本コードは、エクステンションでは使用できない。 当該コードを指定した場合にはエラーとなる。

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

utf8-bom
    BOM 付きの UTF-8 転送形式の Unicode(v11.0) である。

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

utf7-imap
    IMAP 向け修正 utf-7 で、RFC2060 に記載あり。 また、入力ではエンディアンマーク (BOM) は無視、出力には付加されない。

mutf8
    Java 言語向け修正 utf-8。CESU-8 に近いが U-0000 もサロゲートエンコードされる。 また、入力ではエンディアンマーク (BOM) は無視、出力には付加されない。

cesu-8
    unicode technical report #26 記載の修正 utf-8。 また、入力ではエンディアンマーク (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 コードである。

koi8-u
    ウクライナ語 KOI-8 コードである。

cp437
    Windows cp437 (IBM PC-XT) コードである。

cp1250
    Windows cp1250 コードである。

cp1251
    Windows cp1251 コードである。

cp1252
    Windows cp1252 コードである。

x-iscii-de (experimental)
    インド ISCII-91 コードである。フォント切替えは無視される。

geostd8 (experimental)
    ジョージア Geostd8 コードである。

armiscii-8 (experimental)
    アルメニア armiscii-8 コードである。

mik (experimental)
    ブルガリア語 MIK コードである。

tscii (experimental)
    タミール語 TSCII 1.7 コードである。

nyukan-utf-8 nyukan-utf-16
    日本国法務省告示582号で規定する在留カード等に係る漢字氏名等の標記に係る正字 (いわゆる入国管理局正字。以下「入管正字」という。) に変換する。 変換方法の詳細は下記で示す。

arib-b24
    ARIB 標準規格 ARIB-STD-B24 第一編第２部第７章規定の8単位文字符号である。

arib-b24-sjis
    ARIB 標準規格 ARIB-STD-B24 第一編第２部第7.3章規定のシフトJIS文字符号である。

locale (experimental)
    いわゆるコードセットではなく、現環境に指定されたロカールをコードセットとして 指定する。ロカールではコードセットとして十分な情報が提供されているわけはない ので、期待通り動作するかは環境設定に依存する。

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

  ショートカット
以下の各行のオプションは同じ意味である。

-j --oc=jis

-s --oc=sjis

-e --oc=euc-jp

-q --oc=ucs2

-z --oc=utf8

-E --ic=euc-jp

-J --ic=jis

-S --ic=sjis

-Q --ic=ucs2

-Z --ic=utf8

  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 への呼び出しシーケンスは無視される。

--input-detect-jis78
    コードセット自動検出時、JIS X 0208:1978 (C6226:1978) と JIS X 0208:1983/1990 を区別する。 既定値は、この二つのコードセットとも JIS X 0208:1983/1990 と見なされる。 JIS 入力時のみ有効。 入力コードセットに JIS X 0208:1978 を明示指定した場合はこのオプションの有無にかかわらず指定されたコードセットが使用される。

  X-0212 (補助漢字) 制御

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

  Unicode 固有制御

skf-2.1
    は Unicode 11.0 仕様を用いている。

--use-compat --no-compat
    --no-compat の指定時は Unicode の互換プレーン (U+F900 - U+FFFD) を出力せず、 所定の異体字または未定義文字に変換する。--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
    入力中のエンディアン指定キャラクタを無視する。 既定値はオフ (無視しない) である。

--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 正規分解をおこない、結果を出力する/しない。既定値は出力しない。

--oldcell-to-emoticon
    NTT Docomo/AU の Unicode PUA を用いた旧マッピングを Unicode 6.2 以降 の新マッピングに変換する。旧マッピングへの変換はサポートしていない。

--fix-ms-radical-bug
    Windows VISTA 以降の Unicode ハンドラには、一部の漢字コードを U+2Fxx の部首領域に誤マップするバグがある。 このオプションは Unicode などの出力時に部首部にマップされている漢字を対応する漢字に再マップする。

  各種コードセット依存制御 (入力コード判定)
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 の半角 かな部も使っていないものとする。これはあくまでも判定処理への情報であり、これらのカナが実際に含まれていた場合は、判定コードセットに従った所定の処理がされる。

--input-limit-to-jp
    入力コードセット自動判定で文字集合が日本語関連のもののみを検出する。入力のコードセットの明示指定には影響しない。

拡張オプション

  出力関係制御

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

--in-place[=SUF]--overwrite[=SUF]
    入力として指定したファイル名で、コードを変換したファイルを作成する。その際に -overwrite ではファイル作成時刻を維持するよう動作する。 SUF を指定の場合には、入力ファイル名の最後に SUFで指定の文字列が付け加えられ、 入力ファイルがバックアップされる。

-O  オプションの後に並んでいるファイル名の最初のものを出力ファイル名とみなし、そのファイルに出力する。当該ファイル名のファイルが存在する場合には、上書きされる。

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 カナを ８ビットコードの右半面に呼び出し、使用する。 出力が日本語シフト符号化表現時と 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 --convert-xml
    指定した出力文字集合ないにない文字を、html/sgml/xml 表現の文字実体参照に書き換える。 未定義の場合には、数値文字参照呼び出し (10 進) で出力する。 出力文字集合で既定義のものは、--html-sanitize が指定されているとき以外は html として許されないものについても何もしない。 この二つのオプションは同じ動作をする。

--convert-html-decimal
    ラテン文字を html/sgml 表現の、数値文字参照呼び出し (10 進) に置き換える。

--convert-html-hexadecimal
    ラテン文字を html/sgml 表現の、数値文字参照呼び出し (16 進) に置き換える。

--convert-tex
    ラテン文字を、TeX 表現に書き換える。

--convert-perl
    ラテン文字を、Perl5 リテラル表現に書き換える。

--convert-java
    ラテン文字を、Java リテラル表現に書き換える。未定義既定値は '?' に変更される。

--convert-python
    ラテン文字を、Python リテラル表現に書き換える。

--use-replace-char
    skf の出力時の既定の未定義文字コードはゲタであるが、それに代わり Unicode 未定義文字コード U+fffc を使う。既定値はオフである。下記参照。

--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, none であり、順に CAP 符号、MIME エンコーディング (自動判定)、MIME Q エンコーディング、MIME B エンコーディング、 rot13/47 符号、URI 文字参照、PUNYCODE、RFC2231 ファイル名, base64 エンコーディング, q エンコーディングを意味する。none はデコードを行わない。 エンコードで指定可能なのは、hex, mime_b, mime_q, uri, ace, cap, hex_perc_encode, base64, none である。 元々 ASCII に変換するコードセット (例: UTF-7)、および EBCDIC 系、B-right/V 系のコードセットとは両立せず、 エンコード指定が無視される。 URI 文字参照では、文字実体参照は対応していない。 このデコード/エンコード指定は一度に一つしか指定できず、最後に指定したものが有効である。 MIME エンコーディングでは、ヘッダ指定が優先される。また、MIME デコードを指定した場合に地の文の判定がされていなかった場合、地の文のコードは EUC-JP が仮定される。また、rot47 は日本語コード、他のエンコーディングでは入力が ascii でなければならない。特に入出力コードが UTF-16 の場合、本オプションは無視される。

--mime-ms-compat
    このオプションを指定した場合、MIME-B/Q および rfc2231 デコードで指定された iso-2022-jp を cp50220 として、 euc-jp を cp51932 として、Shift-JIS を cp932w として扱う。 他のコードセットについては何もしない。MIME および rfc2231 以外に対しても何もしない。

--mime-persistent
    skf はメールアドレス類似の文字列を検出して、MIME エンコードしないように制御する。 本オプションはその機能を無効にする。

--mime-limit-aware
    上記のアドレス部の検出時、アドレス部の掃き出しで MIME の文字数制限を無視しない。 このオプションを指定すると、行末に近いアドレス部がエンコードされる可能性がある。

  ショートカット
以下の各行のオプションは同じ意味である。
-m --decode=mime

-mB --decode=mime_b

-mQ --decode=qencode

-m0 --decode=none

-M --encode=mime_b

-MB --encode=base64

-MQ --encode=qencode

  改行コード制御

--lineend-thru
    改行コードを変更しない。^Z についてもそのまま出力する。これが既定値である。

--lineend-cr --lineend-mac -Lm
    改行コードを CR にする。同時に ^Z を削除する

--lineend-lf --lineend-unix -Lu
    改行コードを LF にする。同時に ^Z を削除する

--lineend-crlf --lineend-windows -Lw
    改行コードを CRLF にする。同時に ^Z を削除する

-F[行長[-禁則]]

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

  互換機能

--nkf-compat
    引き続くオプションを nkf オプションとして解釈する。-Z, -x, -X オプションは nkf と同じ動作をするよう変更される。 また、-B, -c, -d, -g, -l, -t, -w, -W の各オプションが利用可能になる。 また -a, -A, -N の各オプションが無効化される。 -T, -i, -o オプションはサポートされない。 また、入出力とも IBM/NEC 拡張領域が有効化される。特に EUC-JP の場合には cp51932 として扱われる。 拡張オプションに関しては、nkf の全オプションが実装されているわけではない。また、fF オプションの動作が変更され、MIME デコードが有効となり、--early-mime-out がセットされる。 これ以外にも nkf 互換の動作をおこなうよう内部動作が幾つか変更される。下記 NOTES 参照のこと。 また、skf のバイナリを nkf という名前で呼び出した場合、nkf-compat が設定されているものとして扱う。この場合、以下の点に注意のこと。
    (1) 以下の￥ --reset で skf 固有モードに戻る
    (2) 環境変数も nkf のオプションとして解釈される。環境変数名は SKFENV 等のままである。

--skf-compat
    引き続くオプションを skf のオプションとして解釈する。こちらが既定値である。

-r  nkf 互換 rot 機能。nkf-compat 時のみ有効。このモードでは、入力が JIS/Shift_JIS/EUC (cp932 などの派生を含む) でなければ動作しない。skf 互換モードのときは --decode=rot と同じ動作となる。

-h[123]--hiragana--katakana--katakana-hiragana
    -h, -h1, --hiragana は全てのかなをひらがなに変換する。 -h2, --katakana は全てのかなをカタカナに変換する。 -h3, --katakana-hiragana はひらがなとカタカナを交換する。

--nkf-help
    nkf のオプションを skf のオプションに書き換えるためのヘルプを表示する。

  軽量言語サポート
plugin としての skf は、ファイル入出力関係 (-b, -u, --overwrite --in-place, --filewise-detect --linewise-detect --show-filename --suppress-filename) と、 UTF-16/32 出力以外は通常の skf と同じオプションをサポートする。 呼び出し方は軽量言語ごとに異なるが、option 指定パラメータ、文字列の２つを引数として指定する。NKF のような複数 option パラメータ指定は行わない。 軽量言語プラグインではファイルからの文字変換は行わない。 また、ruby はサポートしない。

  Python-3.x のみのオプション
Python3 の文字列は Latin1/UCS2/UCS4 であり、それに伴い skf は出力コードセットにASCII, UTF-16 または UTF-32が指定された時、skf は文字列としての Unicode Object を返し、それ以外のコードセットでは Binary Array Object を返す。 ASCII 想定の文字列を返すコードセット (UTF-7)、および MIME などの変換結果も文字列として返される。 以下のオプションはその動作を上書きする。なお、既定では UCS2/UCS4 の範囲外は抑止され、BOM は出力されない。

--py-out-binary
    ASCII/UTF-16/32 出力でバイナリアレイオブジェクトを出力する。この場合は BOM が指定に従い追加される。

--py-out-string
    ASCII/UTF-16/32 を Python の Unicode 文字列として出力する。既定値である。 Latin-1 を含めたそれ以外の文字集合ではこのオプションの指定は無視され、常にバイナリアレイオブジェクトが返される。
    入力としては、Unicode Object と Binary Array Object の両方共受け付けられる。

  各種制御

--disable-space-convert --enable-space-convert
    enable-space-compat を指定した場合、JIS X 0208 間隔が ascii 空白二個に変換される。 既定値は変換無効となっている。

--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
    これより前に指定したすべての拡張オプションをクリアする。 環境変数で指定したものなども全てクリアされる。nkf 互換モードもリセットされる。

--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 が見ているディレクトリ位置は、-v オプションで知ることができる。

AUTHOR
    かねこ    efialtes@osdn.jp
    元のnkf: 市川　至    ichikawa@flab.fujitsu.co.jp
X 0213:2000 漢字コード表は earthian@tama.or.jp さんの仕事に由来します。
文字マッピングは、他にも様々なソースからのものを利用しています。詳細は copyright 文書に記載されています。 Unicode Data ベースは Unicode(R), Inc. の著作物でライセンスに沿って利用しています。

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

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

(2) skf-2.1 は 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 と無関係の私用コードセットが幾つか定義されており、呼び出し可能である。

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

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

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

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

(7) skf-2.0 およびそれ以降で認識される言語は iso639-1 (Alpha 2) で定義されたものだけである。iso639-2 はサポートしていない。

(8) 入力の Unicode IVS はサポートされない。無条件に捨てられる。

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

(10) CNS11643 は三面までしかサポートしていない。4面以降は認識するが未定義である。

(11) Python3 向き機能拡張では、Unicode 文字列をinquiry で判定した結果は常に UTF-32BE になる。

(12) UCS2/UTF-16 コードは、ruby/python 3.x 以外の言語エクステンションでは使用できない。 これはバグではなく、各言語との文字列渡し関連の制約である。

Notes

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

(2) 拡張オプション系は 2.0 でかなり削除、仕様変更されているため、 スクリプト内で利用する場合は見なおしてほしい。

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

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

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

(6) 外字や Unicode 標準などに含まれる単位記号のリガチャは skf-1.30 より JIS X 0124:1981 準拠第一形式を出力する。従って、文字数・文字長が変化する場合がある。 これ以外にも、一対一で表示できない文字集合を出力に指定した場合、文字数・文字長が変わる場合がある。

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

(8) skf では、EUC は ISO-2022 の派生系コードとして扱っているので、 所定のシーケンスで G0/G1 を置き換えられる。このため、G0,G1 を置き換えると左右半面のコード系が差し代えるため、他の EUC を扱う漢字フィルタとは違う動きをするので注意されたい。 G1 の置き換えは、 --euc-protect-g1 で抑止できる。
また、EUC の kana-call オプションでは、G2 のコードセットがかなであることを仮定する。このオプション指定時に G2 がカナであることを実行時に確認はしないし、G2 にカナを改めて設定することもない。

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

(12) 昔の nkf の -i, -o オプションは nkf-compat モード時のみサポートしているが、 iso-2022-jp および類似コードセットでのみ意味を持ち、 コードセットの既定値の設定とは無関係である。このオプションは、skf では強く非推奨。 また、今後削除あるいは挙動が変更される可能性がある。

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

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

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

(16) nkf 互換機能: nkf-compat モード時の動作と nkf との差違を下記に示す。
1) --prefix, --fb-* の一部、--no-best-fit-chars は未サポート。他はエラー時の互換性を保証しない。
2) nkf 互換指定での -r オプションは rot デコードとは別動作で、 エンコードを含め動作するが、入力・出力とも JIS, EUC, SJIS 以外をサポートしない。 また、この場合には EUC, SJIS 範囲外の CP932/CP51932 由来のフォールバックも動作しない。 これ以外のコードセットでも rot デコード明示指定は動作する。
3) MSDOS での動作はサポートされない。-T --exec-in, --exec-out もサポートされない。-O はサポートされている。
4) MIME まわりでエラー処理、折り返し処理、コードセット選択に多数の相違点がある。 また、Non-Strict デコーディングはサポートしていない。
5) 改行回り、特に複数の改行文字が混在するテキストでは互換には動作しない。
6) --guess で返すコードセット名は互換ではない。--help や --version の結果も異なる。-Z3 で nkf より多くの文字がエスケープされる。
7) --in-place 等での SUFFIX での * 指定はサポートしない。
8) 以下、相違点ではなく、上記に未記載の nkf の仕様に由来する --nkf-compat 時のみ有効となる細かい動作の変更点を示す。 EUC-JP 時に nkf 互換時のみ 0x80-0x9f が出現した場合に入力コードセット Shift_JIS に切り替えられる。改行コード混在時、cr と lf がともに検出されている場合 crlf に正規化する。 MIME の途中に改行が入っている場合のリカバリを行わず、MIME で正規に次行にわたっている場合に余分な改行を検出した場合の読み飛ばしの範囲を広げている。入出力で JIS X 0213(2000) が指定されていた場合、JIS X 0213(2004/2012) と解釈される。MIME エンコード時に、ストリーム末に改行がなかった場合に改行が補われる。 CP932, CP51932, CP5022x の明示/黙示指定時に MIME でのエンコーディングコードセットとしては Shift_JIS, EUC-JP, ISO-2022-JP が使われる。ISO-2022-JP にないコードを含んでいる場合でも同じで、また、他のオプションの指定などには影響されない。 MIME-Q のエンコード、デコードは文字集合は問わず、-mN などは不要。

(17) 入管正字への変換は、以下のとおり。出力形式は Unicode UTF-8 又は UTF-16 である。limit-to-ucs2 などの Unicode 系の文字制限は無効化される。
1) JIS X0208(1997), JIS X 0212(1990), JIS X 0213(2004/2012)、法務省告示 582
 号別表一に収録されている漢字に相当する Unicode/JIS X 0221 の文字はそのまま出力する。
2) 別表第三に従い、別表第四の一、第四の二の左欄にある文字では、第一順位の文字に変換する。 但し、文字が第二順位として示されている場合は何もしない。
3) それ以外の漢字については、未定義として扱う。未定義文字の処理は上記参照のこと。 漢字以外のラテン文字、アラビア文字や絵文字等はそのまま出力される。

(18) ARIB B24 との互換性は下記のとおりである。
1) 入力のみサポート。出力はできない。
2) 国際化文字集合、X-0213 拡張はサポートしていない。
3) マクロは標準定義のものはサポートしているが、新規定義はサポートしない。定義シーケンスは認識され、丸ごと捨てられる。
4) codeset として ARIB を指定していない場合も、arib 文字集合の呼び出しは可能である。 ただし、X-0201 0x5f 変更は行われず、マクロ呼出しおよび定義、RPC文字は動作しない（捨てられる）。

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 Inc. Vodafone is a trademark of Vodafone K.K.

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