拙著『プログラマのための文字コード技術入門』で説明した、冗長なUTF-8の問題についての話です。
拙著p.168では、iconvとnkfについては、冗長なUTF-8がチェックされ、そのまますり抜けることはないことを記しておきました。ではiconvやnkfのようなコード変換以外のプログラムではどう扱われるかを、少し検証してみます。
拙著p.168に記した方法で、冗長なUTF-8のファイルを作成し、いろいろなプログラムに(適宜UTF-8を指定のうえ)読み込ませてみました。読み込ませるファイルは「!」という文字を冗長なUTF-8で表現したものです。
以下に調査結果を記します。ファイルが文字「!」として認識されなければOKです。つまり、「不明な文字となる」や「表示されない」というのは妥当な動作です。使用したソフトウェアにはバージョンの古いものもありますがあしからずご了承ください。また、本当に冗長性への対処を保証したい場合は、ここに記している結果を鵜呑みにせず、必要に応じて自分で調査することをおすすめします。
Ubuntu Linux 9.04上のソフトウェア:
- Firefox 3.0
不明な文字となる。
- Firefox 3.5
不明な文字となる。
- GNOME端末 2.26.0
不明な文字となる。
- Eclipseのエディタ
不明な文字となる。
- mlterm 2.9.4
表示されない。
- gedit
開けない (UTF-8として認識されない)。
- Emacs 22
「!」という文字になる。編集してセーブすると、正しい(冗長でない)UTF-8のバイト列になる。
- OpenOffice.org Writer 3.0
「!」という文字になる。編集してテキストとしてセーブすると、正しい(冗長でない)UTF-8のバイト列になる。ちなみにBOM付きUTF-8になる模様。
Windows XP上のソフトウェア:
- Internet Explorer 7
不明な文字となる。
- Firefox 3.6
不明な文字となる。
- メモ帳
表示されない。
コメントする