文字化けはなぜ起きるのか
文字は、コンピュータの中では数値の並びとして保存されています。 その数値を文字に戻すときの対応表(文字コード)が、 書いたときと読むときで食い違うと文字化けが起きます。
たとえば「こ」をUTF-8で保存すると E3 81 93 という3つの数値になります。
これをUTF-8の表で読めば「こ」に戻りますが、
Shift_JISの表で読むと別の文字3つとして解釈され、
「縺薙…」のような意味の通らない並びになります。
データが壊れているわけではなく、読み方を間違えているだけです。
だからこそ、正しい表で読み直せば元に戻せます。
2つのモードの違い
| モード | 例 | どんなときに見るか | 復元 |
|---|---|---|---|
| SJIS風 | 縺薙s縺ォ縺。縺ッ | UTF-8の文章をShift_JISとして開いたとき。CSVをExcelで開いた場合や、古い日本語環境でよく見ます | 一部が欠ける場合があります |
| Latin1風 | ã“ã‚“ã«ã¡ã¯ | UTF-8の文章をLatin1(ISO-8859-1)として開いたとき。Webサイトやメールで最も多いパターンです | ほぼ完全に戻せます |
SJIS風で一部の文字が欠けるのは、 UTF-8のバイトの並びの中にShift_JISとして存在しない組み合わせが現れるためです。 そこで情報が失われるので、復元しても「?」などに変わることがあります。 確実に戻したい文章は、Latin1風をお使いください。
実際に文字化けした文章を直したいときは
受け取ったメールやファイルの中身が化けている場合、 「文字化け復元」に化けた文字列を貼り付けてください。 見た目から次のように見当をつけると、当たりやすくなります。
| 化け方の見た目 | 選ぶモード |
|---|---|
| 「縺」「繧」「莉」など、見慣れない漢字とカタカナが混ざる | SJIS風 |
| 「ã」「â」「Ã」など、アクセント付きのラテン文字が並ぶ | Latin1風 |
| 「�」(黒いひし形に疑問符)が並ぶ | すでに情報が失われており、復元できません |
こんなときに使えます
- 化けたメールやファイルを読む— 元の文章に戻して内容を確認する
- 不具合の再現— 開発中に、文字化けした状態のデータを用意する
- 表示確認— 化けた文字がレイアウトを崩さないかを試す
- 遊びで使う— 見た目のインパクトを利用して、隠し文のように使う
文字化けを防ぐには
- UTF-8で統一する— 現在のWebとアプリの標準です。迷ったらUTF-8にします
- CSVをExcelで開くときは注意— UTF-8のCSVを直接開くと化けることがあります。読み込み時に文字コードを指定するか、BOM付きUTF-8で保存します
- HTMLでは文字コードを宣言する—
<meta charset="UTF-8">を先頭付近に書きます - ファイル名にも注意— 環境をまたぐ場合、日本語のファイル名は化けやすくなります
よくある質問
Q. 復元したら「?」や「〓」になってしまいました。
A. 化ける過程で情報が失われた場合、元には戻せません。
SJIS風は、変換の途中でShift_JISに存在しない組み合わせが出ると、そこが失われます。
Latin1風のほうが復元できる可能性が高いので、そちらもお試しください。
Q. 入力した文章は送信されますか?
A. 送信されません。変換はすべてブラウザ上で行われます。
Q. どのモードで化けたのか分かりません。
A. 上の表で見た目から見当をつけたうえで、両方試してみてください。
正しいモードを選べば、意味の通る日本語に戻ります。
Q. 化けた文字数と元の文字数が合いません。
A. 文字化けは1文字が複数文字に化けたり、逆にまとまったりするため、文字数は一致しません。
これは異常ではありません。