文字化けの種類
前回の記事では、よく起こる波線とハイフン (ダッシュ) の文字化けの原因と、Perlでそれを回避する方法を説明しました。いわゆる「文字化け」が発生する原因に、実はいくつかパターンがありますので、ここでそれを整理しておきたいと思います。
- 文字コード変換をした時に対応が見つからず文字化けするもの
- Shift_JIS系の文字コードの外字が、見る環境によって文字化けするもの
- 見ている環境で使用しているフォントに、該当の字形が無いもの
早速これらを細かく見て行きます。
文字コード変換をした時に対応が見つからず文字化けするもの
まず一つ目は、文字コード変換した時 (正確には「プログラムでエンコーディングスキームの変更をした時」) に起こる文字化けです。これは、前回の記事で詳しく見た波線のように、変換元と変換先のどちらにも当該字形があるにも関わらず、文字コードの割り当ての違いから変換の対応が見つからずに文字化けするものと、一方に含まれていて他方の日本語文字コードには含まれていない字形が文字化けしてしまうものがあります。前者の例は件の波線の他、「髙」 (ハシゴ高) や「草彅剛」さんの「彅」があります。後者は例えば、「〠」 (笑顔付の〒マーク、U+3020) です。
Shift_JIS系の文字コードの外字が、見る環境によって文字化けするもの
「外字」というのは一つの文字コード (エンコーディングスキーム) で表現できる文字一覧表の「空きマス」に、各端末メーカーが好きなものを入れて使っている字のことです。ちなみに、「空いていないマス」にはUnicodeやJIS規格で定められた文字が入っています。ネットワーク時代の今日からすると想像しにくいですが、コンピュータが一般に普及してきた初期には、各コンピューターメーカーがおおらかに自社端末用の外字を設定していました。「ワープロ専用機」を使ったことがある方は、自分で外字を作って登録できたのを覚えている方もいるのではないでしょうか。外字は、同じ端末で読み書きしている分には何の問題もありませんが、他の環境で読まれる場合は当然ながら外字部分の文字化けが生じます。 (このため外字は「機種依存文字」とも呼ばれます。) このケースの文字化けでよく知られているのは Windows の「マル1」が Macintosh では「 (日) 」に見えていた点です (※1)。
※1 最近は Macで「 (日) 」の方が文字化けする場合があります。
どのような文字が外字に当るかは、下記のページが詳しく解説してくれています。
見ている環境で使用しているフォントに、該当の字形が無いもの
「フォントに該当の字形が無い」とは、例えば、文字「あ」は欧文フォント「Times New Roman」では表示できませんよね、ということです。日本語実務において問題となるのは、Unicodeで新たに追加された文字を表示できないフォントがあるということです。例えば「𠮷」(←ツチヨシ、「土」の下に「口」の吉を入力してあります。) は、Windows 7 上のフォント「メイリオ」では表示できますが「MSゴシック」では表示できません。UTF-8で保存されていてデータ的には文字化けしていない場合でも、表示環境でフォントの対応が無ければ文字として表示できないのです。また、完全な文字化けを起こさない場合でも、ハネの方向や画数などがフォントによって微妙に違う場合もあります。印刷や、正確な漢字での正式名称の記載が必要な場合以外はあまり深刻に問題にしませんが、例えば「葛」の字の下の部分が「人+L」になるか「ヒ」になるかは、見る側が表示に使っているフォントによって異なり、データの調整では回避ができません。
「葛」の異体字
>次は:日本語文字化け対応の指針