(3) unicode
一方、 unicode には問題が山積みだ。だいたい、素人は unicode という言葉を使っているが、 unicode というものは一種類しかないわけではない。UTF-8,UTF-16BE,UTF-16LE,UTF-32 などが混在している。
【 追記 】
このことを理解しない人が多いので、実例として、
次の三つのファイルを示す。
→ UTF-8.txt ,UTF-16BE.txt ,UTF-16LE.txt
※ ブラウザによっては、文字化けします。その場合は、
いったん保存してから、メモ帳で開いてください。
極端に言えば、 unicode という文字コードはない、とすら言える。 unicode の文字セットは存在するが、 unicode という単一の文字エンコードはないわけだ。( UTF-8,UTF-16BE,UTF-16LE,UTF-32 ならばある。)
そして、これらの文字エンコードには互換性がない。(部分的な互換性はあるが、まともな互換性はない。)
その弊害は?
たとえば、検索しても、まともに検索できない、ということがある。GREP 検索するにしても、それぞれは異なる文字コードだから、別々に検索し直す必要がある。つまり、上記の4通りで、4回も検索する必要がある。検索時間が4倍になる。バカバカしいとしか言いようがない。
また、前にも述べたが、ファイル名を unicode にすると、古いOS(Windows98など)ではファイルを扱えなくなる。ファイル内容を読み取ることもできないし、ファイルを開くことすらできなくなる。
また、HTMLファイルを書くときは、ソースで文字コードの指定を正しく指定する必要が出てくる。間違った文字コードを指定すると、HTML文書全体が読み取れなくなる、ということがある。特に、UTF-8 しかサポートしていないソフトで、JIS第3水準・第4水準の難読文字を入力すると、まったく漢字を扱えなくなる、という問題が生じることもある。
また、そもそもの話、Windows は UTF-8 を採用していない。Windows がOSとして採用しているのは、UTF-16LE である。だからWindowsにおける「ユニコード・テキスト」とは UTF-16LE のことである。というわけで、「 UTF-8 への統一」なんて、ハナから無理だ。
まとめて言おう。 unicode については、次のように言える。
・ ネット では UTF-8 が圧倒的に優勢。(UTF-16 は通用しにくい。)
・ Windows では UTF-16 が圧倒的に優勢。(UTF-8 は通用しにくい。)
そして、双方(UTF-8とUTF-16)には、まともな互換性はない。どっちかに統一することなど無理である。だから、「 unicode に統一する」というのは、文字エンコードとしては無意味であるわけだ。(文字セットとしてならば意味はあるが。)
※ ついでだが、従来はシフトJISでエンコードしていた人が、新たに 「 UTF-8 への統一」という方針を取ると、従来の シフトJISの文書または新規の unicode のどちらか一方が grep 検索の対象にならなくなる。両方をいっぺんに grep 検索することはできないからだ。……したがって、エディタを使っている人だと、非常に不便になる。
※ HTMLの作成も同様だ。HTML を UTF-8 にして、テキストファイルを UTF-16LE にすれば、双方の文字エンコードが異なるので、いっしょに扱うのに不便だ。
2007年7月16日月曜日
シフトJIS と unicode
シフトJIS と unicodeより
登録:
コメントの投稿 (Atom)

0 件のコメント:
コメントを投稿