2013年4月27日土曜日

文字コードをASCIIからUTF-8Nへ変換する(バッドノウハウ)

「テキストファイルはBOM(Byte Order Mark)なしのUTF-8で保存したほうが良い」とよくいわれる. 例えば "Hello World!" という1行からなるテキストファイルを作る. これをUTF-8Nで保存しても, なぜか文字コードはASCIIまたはShift_JISとなってしまう.
しかしよくみるとASCIIとUTF-8は互換性があるようだ. つまり "Hello World!" だけならどちらでも全く同じで

BOMがあればUTF-8, BOMがなければASCII(Shift_JIS)

と判定される. UTF-8Nは

UTF-8N = BOMのないUTF-8 = ASCII

なのでASCIIと判定される. つまり "Hello World!" であれば「文字コードをASCIIからUTF-8Nへ変換する」のは, 実際は何もやっていない(変換する文字がない)ので, 最初の話は当たり前ということになる. (逆に言えば, UTF-8Nに変換できるテキストファイルはASCII以外の文字を必ず含んでいる)

しかしいつ日本語などの変換が必要な文字を入力するか分からない. おそらくバッドノウハウであろうが, 最初からそのような文字を1つ混ぜておくとUTF-8Nに変換できる.

0 件のコメント: