文字化け(もじばけ)

文字化け(もじばけ)とは、本来の文字が、意味をなさない記号や別の文字に置き換わって表示されてしまう現象のことです。データそのものが壊れているとは限らず、多くは読み取り方の食い違いが原因で起こります。

現実世界に例えると、文字化けは暗号表を取り違えて手紙を読んでしまった状態のようなものです。手紙自体は無事なのに、別の表を当てはめたせいで意味不明の羅列に見えます。正しい表に持ち替えれば、そのまま読めます。

よくある症状と原因

見え方 よくある原因 対処
「繧」「縺」が並ぶ UTF-8をShift_JISで読んだ 読み込む文字コードを変える
「?」ばかりになる その文字を表せない 保存形式を見直す
先頭に謎の記号 BOMの付いたファイル BOMなしで保存し直す
四角い箱が並ぶ フォントに字がない 別のフォントにする

なぜ起きるのか

根っこにあるのは、単純な取り違えです。コンピューターは文字を数値として保存しており、その数値と文字の対応表が「文字コード」です。書いたときと読むときで別の表を使うと、まったく違う文字が現れます。データが壊れたわけではありません。

日本語で起きやすい理由

日本語は特に当たりやすい分野です。Shift_JIS、EUC-JP、UTF-8と複数の文字コードが長く併存してきたうえ、一文字を複数の数値で表すため、ずれたときの崩れ方が激しくなります。英数字だけなら、多少表が違っても読めてしまいます。

どこで起きやすいか

場面には偏りがあります。古いシステムから出力されたCSVをExcelで開いたとき、メールの添付ファイル、海外製のソフトに日本語を渡したとき。作った側と開く側で前提が違う場面ほど、起こりやすくなります。

直すときの手順

あわてて上書き保存しないことが第一です。元のファイルを残したまま、テキストエディタで文字コードを指定して開き直します。正しく読めた状態で別名保存すれば復旧します。化けたまま保存すると、そこで本当に情報が失われます。

ファイル名が化けることもある

中身だけの話ではありません。圧縮ファイルをやり取りしたとき、解凍したファイル名が読めなくなることがあります。作成した環境と解凍する環境で、名前の扱い方が違うためです。解凍ソフト側で文字コードを指定できる場合があります。

起こさないためには

予防が最も確実です。やり取りするファイルはUTF-8に統一する、相手の環境を事前に確かめる、CSVは開く前に文字コードを指定する。この三つを習慣にするだけで、遭遇する回数はかなり減ります。

意図せず混ざることもある

少し違う種類の問題もあります。見た目のよく似た別の文字が紛れ込み、検索に引っかからない、システムが受け付けないという不具合です。全角と半角、似た形の記号などが原因で、目視では気づきにくいのが厄介なところです。

あわせて知っておきたい用語

  • 文字コード
    文字と数値の対応を決めた取り決めです。
  • UTF-8
    世界中の文字を扱える、現在の標準的な文字コードです。
  • Shift_JIS
    日本語向けに古くから使われてきた文字コードです。
  • BOM
    文字コードの種類を示す、先頭に置かれる印です。

コメント

タイトルとURLをコピーしました