2005年4月25日

[vine-users:071660] Re: "001A"という文字化け

栗山です。

飛田さんからもご報告がありますが、正方形の中に"301C"という
ような4文字が現れる場合は「Unicodeの文字化け」だと思います。
U3000〜U303Fは「CJK文字(日韓中の漢字)」のコードです。

私もしっかり調べていないので大体の話になりますが、文字化けが
起こるのは

(1)Unicodeフォントがインストールされていない場合

(2)異なったエンコードの場合(utf-8とutf-16など)
(3)送り手と受け手でUnicodeのバージョンが異なっている場合
(4)表示のため使われているフォントが「手抜き」である場合
(5)送り手と受け手でUnicodeの変換規則が異なっている場合


(1)はたとえば韓国語のフォントを持っていない場合、韓国語部分が
すべてコード表記になります。(2)は特に解説の必要はないと思い
ます。(3)Unicodeは割合頻繁にバージョンアップされているので
(現在は4.1)前のバージョンで対応していない文字はコードの表記に
なると思います。(4)は西欧語(latin文字)でもよく起こることで、
たとえばアクセント付きの文字が変換できないなどです。
(5)はUnicodeの冗長性と呼ばれるもので、異なったコードで同じ文字
を表記できることから来る変換規則の不統一です。"001A"というのは
Basic Latin ブロックの中の制御文字ですが、複数の役割が与えられて
いる場合があり、一方がそれに対応していないと間違って出力されたり
するようです。

(1)(2)は割合簡単に対応できると思います。
(4)はちょっと面倒で自分のマシンの中で正常に出力することのできる
フォントを探さなければいけません。具体的には xlsfonts や xfd など
のツールを使って該当コードの位置に正しい文字が入っているフォント
を見つけます(私も古典ギリシャ語の出力で結構悩みました)。
(3)は双方のUnicodeのバージョンを一致させることができればよいの
ですが、これはなかなか難しいかも知れません。
(5)は今のところ決定的な解決方法はないと思います。

ちょっと乱暴な説明ですみません。時間があればきちんとまとめてみたい
のですが・・・。
(どなたかUnicodeに詳しい方のフォローを期待します。)

-------
追記
Unicodeは文字化けしないなどと良く言われますがそれは嘘で、これから
いろいろな局面でクローズアップされる問題だろうと思います。

--
栗山雅俊

投稿者 xml-rpc : 2005年4月25日 23:55
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/13460
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。