2010年8月16日月曜日

GawkでUTF-8のファイルを読み込む時の注意点 - AWK

AWKの入出力とコマンド実行機能
Gawkでは、文字コード UTF-8 のファイルを簡単に扱う事が出来ます。
でも、少し癖がありますので、使う時には気を付けます。


**** Gawkで UTF-8を扱う時の注意点
o Gawk on Windows 3.1.7の場合、Gawkの実行時に、「 -W ctype=UTF8」オプションを追加する必要があります。
o AWKプログラムと入力ファイルの両方の文字コードを、(UTF-8に)合わせる必要があります。
   + 例外は、漢字のような全角文字を一切使っていない場合。この場合は、UTF-8ではなく、普通に(= メモ帳の場合は、ANSIで)保存しても、正しく動きました。
o AWKプログラムと入力ファイルの両方で、UNICODE特有の見えない文字(BOM)を入れてはいけません。
   + 今の所、BOM付きのUTF-8は、Gawkがサポートしていません。
   + AWKプログラムの文字コードがBOM付きのUTF-8の場合、文法エラーになります。
   + 入力ファイルの文字コードがBOM付きのUTF-8の場合、1行目の $0と $1の先頭に、BOMが混入します。
   + 対策方法は「Gawkで、UTF-8のファイルからBOMを除去する方法
o 出力結果をコマンドプロンプト画面(黒い画面)に表示させると、漢字などの全角文字が文字化けしました。
   + Windows XPで確認しました。最新のOSでは、異なるかもしれません。
   + なるべく、半角の英数字や記号を使う事をおすすめします。


**** 確認した処理系
o Gawk on Windows 3.1.7 -- 「 -W ctype=UTF8」オプションが必要
o Gawk for Windows 3.1.6


==
関連ページ:
    ▼AWKの入出力関数とコマンド実行機能▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > Gawkで、UTF-8のファイルからBOMを除去する
    getline = ファイル(やパイプ)から1行読み込む
    print = ファイルなどに書き出す