NKF(1) NKF(1) NNAAMMEE nkf - ネットワーク用漢字コード変換フィルタ v2.0.4 SSYYNNOOPPSSIISS nnkkff [_o_p_t_i_o_n_s] [_f_i_l_e] DDEESSCCRRIIPPTTIIOONN _n_k_fはネットワークでメールやニュースの読み書きをするために作られた、漢字 コードの変換フィルタである。 この_n_k_fの特徴としては、入力漢字コード系の統計的な自動認識機能がある。こ の ため、利用者は、入力漢字コード系が何であるかを知らなくても、出力漢字 コード系のみ指定すれば良いことになる。ただ、この判定機構は、理論的に は 完 全ではないが、通常のニュースやメールのメッセージについては確実に動作 する安全なものにはなっている。 現在、_n_k_fが認識できる入力の漢字コード系は、いわゆる「JISコー ド 」(ISO- 2022-JP に基づくもの)、MS漢字コード(シフトJIS)、日本語EUC(AT&Tコード)の いずれかである。出力する漢字コード系も、この3種類である。 入力は、ファイルを指定しなければ、標準入力となる。出力は標準出力であ る 。 指定できるオプションは、以下の通り。--mmuu のように続けることができる。 --jj JISコードを出力する。(デフォルト) --ee EUCコードを出力する。 --ss シフトJISコードを出力する。 --ww UTF8コードを出力する。 --mm[[BBQQSSNN00]] MIME を解読する。(デフォルト) ISO-2022-JP(base64)とISO-8859-1(Q encode) のみを解読する。ISO-8859-1 (Latin-1) を解読する時は、 -l フ ラ グも必要である。-m0 ではMIMEを解読しない。-mQ, -mBでは、 Q encode, B encode されているものとして処理する。 -mB MIME base64 stream を解読する。ヘッダなどは取り除くこと。 -mQ MIME quoted stream を解読する。 -mS MIME のチェックを厳しくする (デフォルト) -mN MIME のチェックを緩くする -m0 MIME を解読しない。 -mS は、宣言の内容と、その後に続くbase64の整合性をチェックする。 -mN は、改行で切られたMIMEなども解読する。解読が止まらないことも ある。 --MM[[BBQQ]] MIME に変換する。JISにコード変換してからbase64される。 -M ヘッダ形式に変換する -MB base64 stream に変換する -MQ Quoted stream に変換する --JJ --EE --SS --XX --BB 期待される入力コードの性質を指定する。 --JJ ISO-2022-JPを仮定する。 --EE 日本語EUC(AT&T)を仮定する。 --SS MS漢字を仮定する。X0201仮名も仮定される。 --XX MS漢字中にX0201仮名があると仮定する。 --BB 壊れた(Broken)JISコード。ESCがなくなったと仮定する。 --BB11 EESSCC--((, EESSCC--$$ のあとのコードを問わない --BB22 改行のあとに強制的にASCIIの戻す --ff_? 一行_?文字になるように簡単な整形をおこなう。デフォルトは 60文字で ある。 --ZZ X0208中の英数字と若干の記号をASCIIに変換する。-Z1 はX0208 間 隔 をASCII spaceに変換する。-Z2はX0208間隔をASCII space 二つに変換 する。趣味によって使い分けてほしい。 --bb バッファリング出力を行う。(デフォルト) --uu 出力時に、バッファリングしない。 ssh localhost | nkf -u というよ うに使う。 --tt 何もしない。 --II iso-2022-jp以外の漢字コードを〓に変換。 --ii_? JIS 漢字を指示するシーケンスとして EESSCC--’’$$’’--_?を使用する。 (デフォ ルトは、ESC-’$’-’B’) --oo_? 1バイト英数文字セットを指示するシーケンスとして、EESSCC--’’((’’--_?を使用 する。 (デフォルトは、ESC-’(’-’B’) --rr ROT13/47の変換をする。 --vv バージョンを表示する。 --TT テキストモードで出力する。(MS-DOS上でのみ効力を持つ) --ll 0x80-0xfe のコードをISO-8859-1 (Latin-1)として扱う。 JISコードア ウトプットとの組合せみのみ有効。 -s, -e, -xとは両立しない。 --xx 通常おこなわれるX0201仮名->X0208の仮名変換をしないで、 X0201仮名を保存する。入力は 、MS-Kanji の1byte 仮 名 、SO/SI 、 ESC-(-I, SSO を受け付ける。出力は、日本語EUC中ではSSO、 JISでは ESC-’(’-I を使う。 --OO ファイルに出力する。Unixでは不要な機能だがWindowsやMSDOSでは必要 らしい。直後の引き数でなく、最後のファイル名が出力ファイル名とな り上書きされてしまうので注意。ファイル名がない場合は、 nkf.out。 --cc NLまえにCRを付加する。 --dd NLまえのCRを削除する。単独のCRは、NLに置き換えられる。 --LL[[wwmmuu]] 改行モード -Lu unix (LF) -Lw windows (CRLF) -Lm mac (CR) デフォルトは変換なし。 ---- 長い名前のオプション。これらは、上のオプションの組合せの別名。 --fj,--unix,--mac,--msdos, --windows これらのシステムに適した変換をします。 --jis,--euc,--sjis,--mime,--base64 対応する変換をします。 --hirakana, --katakana 平仮名、片仮名変換 --cap-input, --url-input それぞれ ’:’, ’%’ に続く 16 進数を文字に変換する --overwrite 元 のファイルを変換結果で置き換える。複数のファイルを書き 換えることも可能。 --no-cp932 Shift_JIS の、FAxx-FCxx を、CP932 で同値な文字に読み 換える動作を無効にする --help --version -- これ以降のオプションを無視する 次の 22 つは、ccoonnffiigg..hh で EEXXEECC__IIOO を ddeeffiinnee してコンパイルした時のみ有効 --exec-in nkf [options] --exec-in cmd args... とやると、cmd の出 力 を nkf の入力とする --exec-out nkf [options] --exec-out cmd args... とやると、nkf の出力 を cmd の入力とする AAUUTTHHOORR 市川 至 ichikawa@flab.fujitsu.co.jp (was ichikawa@fujitsu.JUNET) 河野 真治 kono@ie.u-ryukyu.acjp Rei FURUKAWA furukawa@tcp-ip.or.jp BBUUGGSS 実は、入力のコード系の判定は、EUCとシフトJISとの自動判定であり、最初 に 特 定できる文字が来た時点で確定してしまう。そして、特定不能の間は保留バ ッファにためておかれ、確定後に処理される。このため、 1) 7ビットJISは常に認識される。シフトJIS、EUC混合もほとんどの場合は 問題がない。ただし、 2) シフトJISのX0201仮名とEUCが識別できない。したがって、デフォルト ではシフトJISのX0201仮名はないと仮定している。 このフィルタの変換は、コード系に対応した一括写像を施すだけなので、外 字 や特殊記号や罫線素片など、JIS第一、第二水準表において定義されていないコ ードに各社により割り当てられた文字変換しない。第三水準なども変換しな い 。 UTF8の日本語以外の部分にも対応していない。 kkoonnoo@@ccssll..ssoonnyy..ccoo..jjpp ((SShhiinnjjii KKoonnoo)) による変更。 X0201 仮名(いわゆる半角かな)はデフォルトでX0208(全角仮名)に変換される。 ただし、シフトJISのX0201仮名はデフォルトではEUCだと解釈されてしまう。こ れ が望ましくない時には -S や - -X などのフラグを使えば良い。-Xを指定す ると一旦確定したシフトJISから EUCに移行することはない。ESC-(-I に よ る X0201は常に認識される。SI/SO SSOは、-lが指定されていなければX0201と解釈 する。 MIME decodeは、ISO-2022-JPのbase64と、ISO-8859-1の16進encodeのみ decode す る。 MIME decodeは、単純な改行や空白は安全に読み飛ばされる。というこ とは、 MIME decode中の空白は保存されない。変換は可逆ではない。 lessやrn で 行が分割された時は、 Terminalによって異なる ESC-[-K などが挿入される ので、完全にはdecode できない。-mN では、チェックが緩いので decodeで き る場合もある。 ISO-8859-1 出力はJIS コード出力としか両立しない。 Fold 機能はfmtと異なり行頭の空白を無視する。禁則処理はあるが指定された 長さ+5で強制改行する。-f60-10 などとすると強制改行の 余 地(fold-margin) を調整できる。-f40-0とすると禁則処理なしとなる。 X0201仮名はrot47されない。 nnkkff 11..66 kkoonnoo@@iiee..uu--rryyuukkyyuu..aacc..jjpp ((SShhiinnjjii KKoonnoo)) による変更。 -B のlevelを0,1,2 に増やした。MIMEのbase64, Q-Encodingを解読する機能を 付けた。ヘッダなどは解読しないので、Encodeされた部分だけを通す必要が あ る。 -mB は、nkf1.5と違う動きをするので、-B -m とすること。 nnkkff 11..66..11 -Z1 でX0208間隔->ASCII spaceの変換をおこなう。 -Z2 でX0208間隔->ASCII space 2個の変換をおこなう。 nnkkff 11..77 ESC-$-(-B などにも対応するようになった。 copy right の非営利の条件が不要になった。使用時の問い合わせも不要。 Perl Extension として使えるようになった。 nnkkff 11..99 MIME エンコードの機能時でも、コード変換されしまうので注意。 base64 エン コードでは改行時に先頭に空白が付くのでメールヘッダに使用できる。 コ ード変換モジュールは、サブルーチンを継続によって接続する形式となった 。複数の変換を自由に接続できるようになった。 getc <-- iconv --> oconv --> other conversion --> putc という形で、順に呼び出される。 長いオプション名を許すようになった。 --mac --jis --unix など。 UUTTFF--88 サポートについて furukawa@tcp-ip.or.jp による。 従来の nkf と同様に、nkf -e として起動すると、自動判別で UTF-8 と判定さ れれば、そのまま euc-jp に変換される。 オプションで、文字コードを指定できる。 -w 出力を utf-8 に指定します -W 入力を utf-8 と仮定します 特に自動判別、コード混在、エラー処理系には判定を失敗するこがある。 -Z3 オプションの新設 X0208 の ’>’, ’<’, ’”’, ’&’ をそれぞれ ’>’, ’<’, ’"’, ’&’ に変換します nnkkff 22..00 newline を保存する folding -F。fmtに近い動作をする。 folding のマージン。-f60-0 などと、0にすると禁則せずに、強制的にfolding する。携帯にメールを送るときに使う。 nkf -f40-0 などとしてメールを 40 文字づつ切り出して、「Subject 160 文字 目 から 199 文字目まで」「本文 200 文字目から 239 文字目まで」とする 。 MMIIMMEE関係 fixed mime mode ( -mQ ) で =? で Q-encode が抜けてしまうバグの修正。 Q encode の Soft Wrap に対応。 MIME encode のWrapでは、先頭に一文字の空白挿入。した。あA の MIME 変 換 は、A を含んで変換しないといけないが、対応していない。RFCには反した動作 だが、 encoded word 間のwhite spaceは無視される 。 nkf_test.pl で は 、MIMEの空白を削除してから比較している。 non-strict mime -MN では、空白、改行をまたいで、base64 encoding を解読 する。これで、スクリーンからcut&pasteでデコードすることも可能。止まらな い可能性あり。 その他 nkf_test.pl のバグチェックを増やした。 test が失敗したときにdiffを取る ようにした。 make_test.pl でテスト作成可能。 Perl moduleで、\0を含む文字列も変換できるようになった。 Perl XSでの文字 列の長さの扱いを修正。 NKFをNKF.modにしたので、Mac OS X でMakeでコンパイル化。 rot13が1.9で動かなくなっていたのを修正。 -Z の間隔やおかしな変換の修正 hiragana/katakana 変換ができるようになりました。 -h1 --katakana ひらがな->かたかな -h2 --hirakana かたかな->ひらがな -h3 --hirakana-katakana かたかな<->ひらがな --overwrite で、引数のファイルを直接、置き換えることができます。 nnkkff 22..00..44 Shift_JIS の FAxx-FCxx について、普通の式では euc に変換できませんが 、CP932 で同値な文字に読み換えて変換します。この動作を無効にす る に は 、--no-cp932 をつけてください。 perl module に nkf_continue オプション、自動判別の状態などを引き継いで変換 inputcode 自動判別結果の文字コードを返すを追加しました。 --numchar-input オプションを新設 mhonarc など、日本語を UTF-16 の &#....; のパターンで出力するものを 変換します。 --exec-in, --exec-out オプションを新設 (config.h で EXEC_IO を define してコンパイルした時のみ有効) nkf -e --exec-in cmd args... とやると、cmd の出力を nkf の入力とします。 nkf -e --exec-out cmd args... とやると、nkf の出力を cmd の入力とします。 nnkkff 22..00..55 --cp932inv というオプションをつけると Shift_JIS への変換の際、EDxx-EFxx については、 CP932 で同値な FAxx-FCxx の文字に変換します。 --guess または -g というオプションをつけると自動判別の結果を出力しま す 。 --prefix= というオプションをつけると、EUC-JP から Shift_JIS への変換の 際、2 バイト目に現れた文字の前にエスケープ文字をつけることができます 。 引 数の 1 文字目がエスケープ文字、2文字目以降にエスケープされるべき文字 を指定します。 例えば、 --prefix= とすると、Shift_JIS の 2 文字目に $, @ が来たら、その前に が 挿入されます --prefix=@@ とすると、Shift_JIS の 2 文字目に @ が来たら、 その前に @ が挿入されます AACCKKNNOOWWLLEEDDGGEE 以下のかたがた、どうもありがとうございました。 nkf 1.4 morb@fujitsu, kiss@ayumi.stars.flab.fujitsu, cen122@flab.fujitsu, yuki@flab.fujitsu 他、fujitsu & flab.fujitsuの皆さんの協力に感謝。 shinoda@cs.titech, kato@cs.titech, uematsu@cs.titech TNX kono@ie.u-ryukyu.ac.jp nkf 1.9- Akio Furukawa Andy Taki From: OHARA Shigeki Fumitaka Kitagawa Hiroaki Sengoku Ikuhiro MORITA (森田 育宏) Yoshiharu ITO Junn Ohta KAWAMURA Masao Kazuhiko Mori Keitaro Isokawa Ken-ichi Hirose Ki-ichiro SATO Kiwamu Aoyama Koichi Hirayama Mitsuru Hase(長谷 満) OHARA Shigeki (大原 重樹) Rei FURUKAWA Satoru Takabayashi Shigeyuki Takagi Shin MICHIMUKO Tadamasa Teranishi TOYODA Jiro TSUCHIYA Masatoshi Tsutomu Sakai YAMASHITA Junji (山下 純司) Yasuyuki Sato Yoshiaki Yanagihara Yoshiaki Yanagihara hat@so-net DCC技術部渡辺 かとぺ / 加藤 貴司 かべdais ひろせ まさあき イントラネットシステム(株)松尾 鵜飼文敏 塩崎 毅彦(SHIOZAKI Takehiko) 河村雅夫 (Media Lab.) 河野 康司 喜瀬“冬猫”浩@南国沖縄 金井 智彦 桂田 祐史 (かつらだ まさし) 高橋宜盟 国吉 黒江明彦 三宅正泰 山倉 真 山本 芳人 山野裕司 (やまのゆうじ) 重村法克 小島基靖 上田 健 新井 康司 (Koji Arai) 森 千絵子 森 和彦 水野 貴文 前地和俊 仲宗根@並列信頼研 猪谷 英一郎 == Eiichiro Itani 藤原 秀行  八田 真行 (Masayuki Hatta) 尾川敏也 望月 孝志 木村(@筑波大学数学研究科) 野村俊彰 有岡@ミノルタ 有沢 明宏 落合一喜 林 亮 國安 治 木下 雄介 成瀬ゆい 鶴谷直樹 中田伸悦 河野真治 www.ie.u-ryukyu.ac.jp/~kono/nkf/ 07/Feb/2004 NKF(1)