.\"-- << kanji code converter >> ---- .\" .\" kcc.jman .\" Aug 24 1992 .\" mod: Nov 19 1992 .\"------------------------------------------------ tonooka ------------ .\" @(#)kcc.jman 2.1 (Y.Tonooka) 9/6/93 .TH KCC L "1992年11月19日" "Y. Tonooka" .SH "名前" kcc \- 自動判別機能つき漢字コード変換 .SH "形式" .B kcc [ .BI \- IO chnvxz ] [ .BI \-b " bufsize" ] .RI [ " file " "] .\|.\|." .SH "機能説明" .B kcc は,指定した .I file を順番に読み込み,漢字コードを変換して標準出力に出力するフィルターです。 ファイルの指定がないとき,あるいはファイル名として .B \- が指定されたときには標準入力から読み込みます。入出力の漢字コードはオプシ ョンで指定しますが,入力コードを指定しないとファイルごとの自動判別になり ます。 .LP 使える漢字コードは .SM JIS\s0(7 ビットおよび 8 ビット),シフト .SM JIS\s0,\s-1EUC\s0,\s-1DEC\s0 です。 入力コードは,\s-1EUC\s0,\s-1DEC\s0 あるいはシフト .SM JIS のいずれかと 7 ビット .SM JIS との組み合せに限り,混在が可能です。\s-1JIS\s0 の半角仮名は .BR \s-1SI\s0 / \s-1SO\s0 , \s-1ESC\s0(I ともに認識されます。 .SH "オプション" .TP .BI \- O .PD 0 .TP .BI \- IO .IR I " で入力漢字コードを," O で出力漢字コードを指定します。入力コードの指定がないときには自動判別に, また,どちらも指定しないとき出力コードは 7 ビット .SM JIS になります。 .PD .IP 入力コードを指定する .I I は以下のうちの 1 つです。 .LP .RS 10 .PD 0 .TP .B e .SM EUC\s0(7 ビット .SM JIS 混在可) .TP .B d .SM DEC\s0(7 ビット .SM JIS 混在可) .TP .B s シフト .SM JIS\s0(7 ビット .SM JIS 混在可) .TP .BR j , 7 " または " k 7 ビット .SM JIS .TP .B 8 8 ビット .SM JIS .PD .RE .IP 出力コードを指定する .I O は以下のうちの 1 つです。 .LP .RS 10 .PD 0 .TP .B e .SM EUC .TP .B d .SM DEC .TP .B s シフト .SM JIS .TP .BR j\fIXY " または " 7\fIXY 7 ビット .RB \s-1JIS\s0( \s-1SI\s0 / \s-1SO\s0 による .SM JIS 仮名指示) .TP .BI k XY 7 ビット .RB \s-1JIS\s0( \s-1ESC\s0(I による .SM JIS 仮名指示) .TP .BI 8 XY 8 ビット .SM JIS .PD .RE .IP .I O 中の .I XY で,\s-1JIS\s0 コード出力でのエスケープシークェンスが指定できます。省略 すると .B BJ とみなされます。なお,補助漢字指定は .B \s-1ESC\s0$(D で固定です。 .LP .RS 10 .PD 0 .TP .I X 漢字指定 .RS 5 .TP .B B .BR \s-1ESC\s0$B "(第 2 次規格漢字指示) .TP .B @ .BR \s-1ESC\s0$@ "(第 1 次規格漢字指示) .TP .B + .BR \s-1ESC\s0&@\s-1ESC\s0$B "(第 3 次規格漢字指示) .RE .TP .I Y 英数字指定 .RS 5 .TP .B B .BR \s-1ESC\s0(B "(ASCII 指示) .TP .B J .BR \s-1ESC\s0(J "(JIS ローマ字指示) .TP .B H .BR \s-1ESC\s0(H "(スウェーデン名前用文字指示) .PD .RE .RE .TP .B \-v 入力コードの判別結果を標準エラー出力に出力します。 .TP .B \-x 拡張モード。入力コードの自動判別で,外字や拡張文字領域(\s-1EUC\s0 の外 字・未定義の半角仮名・制御文字 .SM C1 の各領域,およびシフト .SM JIS の拡張文字領域)を認識します。\s-1DEC\s0 と .SM EUC との判別はこのモードでのみ,なされます。 .TP .B \-z 縮小モード。入力コードの自動判別で半角仮名を認識しません(7 ビット .SM JIS を除く)。半角仮名を含まないファイルの場合,これを指定すると判別の確度が 高まります。 .TP .B \-h 半角仮名を .SM DEC に変換すると全角のカタカナに変換されますが,このオプションを指定するとひ らがなになります。 .TP .B \-n 外字・拡張文字・補助漢字領域を“□”に,半角仮名の未定義領域を半角の “・”に変換します。 .TP .BI \-b " bufsize" 入力の判別がつかないあいだ入力をためておくバッファーの大きさを指定しま す。省略時は 8k バイトです。 .TP .B \-c 変換を行わず,入力コードの種類だけを調べ,結果を標準出力に出力します。通 常の自動判別の場合とは異なり,ファイルは最後まで調べられます。ただし,途 中でコード体系に矛盾が見つかった場合には読み込みを中断し“data”と表示し ます。\fB\-x\fR,\fB\-z\fR 以外のオプションは無効になります。 .SH "使用例" .IP "\fB% kcc \-e \fIfile" 入力コード自動判別で出力コードは .SM EUC .IP "\fB% kcc \-sj \fIfile1 file2" シフト .SM JIS のファイル 2 つを .SM JIS へ変換し連結 .IP "\fB% \fIcommand\fB | kcc \-k+J" .I command 出力を .SM JIS\s0(\s-1JIS\s0 第 3 次規格 漢字指示,\s-1JIS\s0 ローマ字指示,\fB\s-1ESC\s0(I\fR による .SM JIS 仮名指示)へ .IP "\fB% kcc \-c \fIfile" .I file のコードを判別する(変換は行わない) .SH "補足説明" 入力コードの自動判別は通常の文書においてはほぼ確実に行えますが,以下のよ うな問題を含んでいます。 .LP 7 ビット .SM JIS はエスケープシークェンスによるモード切り替えによっていて確実に判別されま す。\s-1EUC\s0 と .SM DEC は根本的には同じものです(以下 .SM EUC 系と呼ぶ)。一方,8 ビット .SM JIS の半角仮名はシフト .SM JIS の半角仮名と同じです(同シフト .SM JIS 系)。ところが,共に 8 ビットコードである .SM EUC 系とシフト .SM JIS 系は,領域が広く重なっていて背反しています。つまり,コードの自動判定の問 題点はこの 2 つの判別にあります。 .LP .SM EUC 系/シフト .SM JIS 系の判別は行単位で行い,「シフト .SM JIS 系でない」あるいは「\s-1EUC\s0 系でない」と分かった時点で確定とします。 どちらにも矛盾する行が最初に現れたときには“data”扱いになり,出力内容は 保証されません。 .LP 最初に 8 ビットの漢字コードが現れてから .SM EUC 系/シフト .SM JIS 系の判別がつくまでは,変換を保留し,入力をバッファーにためておきますが, これがいっぱいになると .SM EUC 系であると決めつけて変換を強行します。根拠は以下のとおりです。通常の漢字 入りの文書は .SM JIS 非漢字か .SM JIS 第 1 水準の漢字をまず含んでいると考えられますが,シフト .SM JIS の場合,これらの文字は一部を除いて .SM EUC 系の領域とは重なっていないため,確実に判別されます。つまり,判別できない ときには .SM EUC である可能性が高いわけです。 .LP 8 ビット .SM JIS で,半角仮名が必ず偶数個連続して現れているときは,\s-1EUC\s0 の漢字であ ると誤認されてしまうので注意が必要です。 .LP 入力が半角仮名を含まないときには .B \-z オプションの縮小モードを利用すると判別の確度が高まります。これは重なる領 域が .SM JIS 第 2 水準漢字内に限定されるからです。 .LP シフト .SM JIS の拡張領域・\s-1EUC\s0 の外字領域・\s-1EUC\s0 の制御文字 .SM C1 の領域・\s-1EUC\s0 の半角仮名の未定義領域は,自動判別の認識対象には入ら ないので,これらを含む入力では誤った判別がなされてしまいます。このときは .B \-x オプションで拡張モードを指定するか,入力コードを明示的に指定してくださ い。 .SH "関連項目" .BR cat (1) .SH "その他" 通常,外字・拡張文字・補助漢字領域はそれぞれの対応する領域に投影されま す。ただし,シフト .SM JIS への変換で拡張文字領域からはみ出す文字は,16 進で FCFC になります。 \s-1EUC\s0 と .SM DEC の制御文字領域 .SM C1 は, .SM JIS へ変換する場合はそのままですが,シフト .SM JIS への場合には削除されます。また,半角仮名の未定義領域は,シフト .SM JIS に変換すると,半角の“・”に置き換えられます。半角仮名を .SM DEC に変換すると全角の仮名に変換されます。 .LP .SM JIS コード出力の場合,改行・タブ・抹消などの制御文字や空白(半角)は,英数字 モードで出力されます。 .LP 入力コードの自動判別を誤った場合,また,それぞれの文字セットに未定義の文 字が入力された場合,出力がどうなるかは不定です。