Provided by: kcc_2.3-12.1_amd64 bug

名前

       kcc - 自動判別機能つき漢字コード変換

形式

       kcc [ -IOchnvxz ] [ -b bufsize ] [ file ] ...

機能説明

       kcc は,指定した file を順番に読み込み,漢字コードを変換して標準出力に出力するフィルターで
       す。 ファイルの指定がないとき,あるいはファイル名として - が指定されたときには標準入力から
       読み込みます。入出力の漢字コードはオプシ  ョンで指定しますが,入力コードを指定しないとファ
       イルごとの自動判別になり ます。

       使える漢字コードは JIS(7 ビットおよび 8 ビット),シフト JIS,EUC,DEC です。  入力コード
       は,EUC,DEC あるいはシフト JIS のいずれかと 7 ビット JIS との組み合せに限り,混在が可能で
       す。JIS の半角仮名は SI/SOESC(I ともに認識されます。

オプション

       -O
       -IO    I で入力漢字コードを,O  で出力漢字コードを指定します。入力コードの指定がないときに
              は自動判別に, また,どちらも指定しないとき出力コードは 7 ビット JIS になります。

              入力コードを指定する I は以下のうちの 1 つです。

                 e      EUC(7 ビット JIS 混在可)
                 d      DEC(7 ビット JIS 混在可)
                 s      シフト JIS(7 ビット JIS 混在可)
                 j7 または k
                        7 ビット JIS
                 8      8 ビット JIS

              出力コードを指定する O は以下のうちの 1 つです。

                 e      EUC
                 d      DEC
                 s      シフト JIS
                 jXY または 7XY
                        7 ビット JIS(SI/SO による JIS 仮名指示)
                 kXY    7 ビット JIS(ESC(I による JIS 仮名指示)
                 8XY    8 ビット JIS

              O  中の  XY で,JIS コード出力でのエスケープシークェンスが指定できます。省略 すると
              BJ とみなされます。なお,補助漢字指定は ESC$(D で固定です。

                 X      漢字指定
                      B      ESC$B(第 2 次規格漢字指示)
                      @      ESC$@(第 1 次規格漢字指示)
                      +      ESC&@ESC$B(第 3 次規格漢字指示)
                 Y      英数字指定
                      B      ESC(B(ASCII 指示)
                      J      ESC(J(JIS ローマ字指示)
                      H      ESC(H(スウェーデン名前用文字指示)

       -v     入力コードの判別結果を標準エラー出力に出力します。

       -x     拡張モード。入力コードの自動判別で,外字や拡張文字領域(EUC の外 字・未定義の半角仮
              名・制御文字 C1 の各領域,およびシフト JIS の拡張文字領域)を認識します。DEC と EUC
              との判別はこのモードでのみ,なされます。

       -z     縮小モード。入力コードの自動判別で半角仮名を認識しません(7 ビット JIS を除く)。半
              角仮名を含まないファイルの場合,これを指定すると判別の確度が 高まります。

       -h     半角仮名を DEC に変換すると全角のカタカナに変換されますが,このオプションを指定する
              とひ らがなになります。

       -n     外字・拡張文字・補助漢字領域を“□”に,半角仮名の未定義領域を半角の    “・”に変換しま
              す。

       -b bufsize
              入力の判別がつかないあいだ入力をためておくバッファーの大きさを指定しま す。省略時は
              8k バイトです。

       -c     変換を行わず,入力コードの種類だけを調べ,結果を標準出力に出力します。通 常の自動判
              別の場合とは異なり,ファイルは最後まで調べられます。ただし,途 中でコード体系に矛盾
              が見つかった場合には読み込みを中断し“data”と表示し ます。-x-z  以外のオプションは
              無効になります。

使用例

       % kcc -e file
              入力コード自動判別で出力コードは EUC

       % kcc -sj file1 file2
              シフト JIS のファイル 2 つを JIS へ変換し連結

       % command | kcc -k+J
              command 出力を JIS(JIS 第 3 次規格 漢字指示,JIS ローマ字指示,ESC(I による JIS 仮
              名指示)へ

       % kcc -c file
              file のコードを判別する(変換は行わない)

補足説明

       入力コードの自動判別は通常の文書においてはほぼ確実に行えますが,以下のよ  うな問題を含んで
       います。

       7   ビット   JIS  はエスケープシークェンスによるモード切り替えによっていて確実に判別されま
       す。EUC と DEC は根本的には同じものです(以下 EUC 系と呼ぶ)。一方,8 ビット JIS  の半角仮
       名はシフト  JIS の半角仮名と同じです(同シフト JIS 系)。ところが,共に 8 ビットコードであ
       る EUC 系とシフト JIS 系は,領域が広く重なっていて背反しています。つまり,コードの自動判定
       の問 題点はこの 2 つの判別にあります。

       EUC  系/シフト  JIS  系の判別は行単位で行い,「シフト  JIS  系でない」あるいは「EUC 系でな
       い」と分かった時点で確定とします。  どちらにも矛盾する行が最初に現れたときには“data”扱いに
       なり,出力内容は 保証されません。

       最初に 8 ビットの漢字コードが現れてから EUC 系/シフト JIS 系の判別がつくまでは,変換を保留
       し,入力をバッファーにためておきますが, これがいっぱいになると EUC 系であると決めつけて変
       換を強行します。根拠は以下のとおりです。通常の漢字 入りの文書は JIS 非漢字か JIS 第 1 水準
       の漢字をまず含んでいると考えられますが,シフト JIS の場合,これらの文字は一部を除いて  EUC
       系の領域とは重なっていないため,確実に判別されます。つまり,判別できない ときには EUC であ
       る可能性が高いわけです。

       8 ビット JIS で,半角仮名が必ず偶数個連続して現れているときは,EUC の漢字であ ると誤認され
       てしまうので注意が必要です。

       入力が半角仮名を含まないときには -z オプションの縮小モードを利用すると判別の確度が高まりま
       す。これは重なる領 域が JIS 第 2 水準漢字内に限定されるからです。

       シフト JIS の拡張領域・EUC の外字領域・EUC の制御文字 C1 の領域・EUC  の半角仮名の未定義領
       域は,自動判別の認識対象には入ら  ないので,これらを含む入力では誤った判別がなされてしまい
       ます。このときは -x オプションで拡張モードを指定するか,入力コードを明示的に指定してくださ
       い。

関連項目

       cat(1)

その他

       通常,外字・拡張文字・補助漢字領域はそれぞれの対応する領域に投影されま  す。ただし,シフト
       JIS への変換で拡張文字領域からはみ出す文字は,16 進で FCFC になります。 EUC と DEC  の制御
       文字領域  C1  は,  JIS  へ変換する場合はそのままですが,シフト JIS への場合には削除されま
       す。また,半角仮名の未定義領域は,シフト   JIS    に変換すると,半角の“・”に置き換えられま
       す。半角仮名を DEC に変換すると全角の仮名に変換されます。

       JIS  コード出力の場合,改行・タブ・抹消などの制御文字や空白(半角)は,英数字 モードで出力
       されます。

       入力コードの自動判別を誤った場合,また,それぞれの文字セットに未定義の文  字が入力された場
       合,出力がどうなるかは不定です。