文字化け解説・文字化けとは




目次


概説

文字化けとは、コンピュータにおいて文字を表示する際に、元の文字とは異なる文字で表示される現象のことを指します。

文字化けの主な原因として、以下が挙げられます。

文字コード違い
符号化時の文字コードと解釈時の文字コードが異なることによって発生する文字化けです。 作業者による文字コードの指定ミスや、アプリケーションの自動判別の失敗によって発生します。 一般的に文字化けの中で、最も発生頻度が高いケースと言えます。
アプリケーションの対応不足
アプリケーションがマルチバイト文字に十分に対応していないことによって発生する文字化けです。 いわゆる「5C問題」はこのタイプの文字化けです。大部分の文字は問題なく表示され、 「ソ」「十」「能」「表」など2バイト目が5Cの文字が文字化けします。 このケースは経験や知識がないと気付きにくく、 そして対応策は
  • 「ソ」「十」「能」「表」など文字化けする文字を避ける
  • 文字化けする文字の後ろに「\」を入れる
  • アプリケーションをバージョンアップする、
  • 別のアプリケーションに乗り換える
など、しっくりこない対応策しかない厄介な文字化けと言えます。
情報の欠損・破損
情報が欠損したり破損することによって発生する文字化けです。 代表的なのは、メールで半角カナを使った場合に発生することがある文字化けです。 近年はあまり見かけなくなりましたが、かつてはしばしばありました。 半角カナは日本語メールの仕様上は送信できない文字なのでエンコード対象外としてそのまま送信され、 途中のサーバーなどで8ビット目がクリアされることにより文字化けが発生していました。
フォントの対応不足
フォントによって、表示できる文字の種類や数が異なります。そのため、特定の文字を表示できないことがあります。

「文字コード違い」によって発生する文字化けの仕組み

ここからは「文字コード違い」によって発生する文字化けの仕組みについてざっくりと説明していきます。

コンピュータの世界では文字はコード値で表現されます。 例えばひらがなの「あ」は、UTF-8で「E3 81 82」、Shift_JISで「82 A0」、EUC-JPで「A4 A2」と、 文字コードによって異なるコード値になっています。

文字
UTF-8E3 81 82
Shift_JIS82 A0
EUC-JPA4 A2

「あ」と1文字だけ記述したテキストファイルをEUC-JPで保存し、Shift_JISとして解釈して開いた場合を考えます。 「あ」をEUC-JPで符号化すると「A4 A2」というコード値になります。このコード値はShift_JISでは、 「A4」は「、」(半角の読点)、 「A2」は「「」(半角のかぎかっこ開始)に割り当てられています。 そのため、もともとEUC-JPで「あ」だった内容が、Shift_JISでは「、「」と表示されます。

文字
EUC-JPA4 A2
 ⇒ 
文字
Shift_JISA4A2

このように符号化時と解釈時で文字コードが異なっている場合に、別の文字として解釈されることにより文字化けが発生します。 このような文字化けは、使用者の指定ミスもしくはアプリケーションの自動判別の失敗によって発生します。

ただし、すべてのコード値が他の文字コードで何かしらの文字に割り当てられているわけではありません。割り当てがない場合もあります。そのような場合の挙動はアプリケーションによって異なるのですが、「?」や「□」などに変換され表示されることが多いです。

これが「文字コード違い」によって発生する文字化けの仕組みです。

ちょこっとアンケート&メッセージ

このページに関するちょっとした感想または、要望、バグ・間違いの指摘などは、下記の送信欄からお送りください。 質問・その他お問合せなど、返信をご希望の方は「こちらのページ」からメッセージをお送りください。

「このページはお役に立ちましたか?」のアンケートとメッセージのどちらか一方でかまいません (両方書いていただけるとよりうれしいです)。お気軽にご利用ください (感想・どんな用途で使用したかなどをいただけると作成・運営の励みになります!)


このページはお役に立ちましたか?