文字化けの復元
化けた文章を貼り付けると、考えられる直し方を並べます。戻せない文字はその数も出します。
Shift_JIS の文章を UTF-8 として読んだ形です。Shift_JIS のファイルを UTF-8 だと思って開いた場合。 ただし 5文字 が「�」のままです。 その部分は貼り付けの時点で失われています。
上が外れているときは、こちらを見てください。並びは当てはまりそうな順です。
- EUC-JP を Shift_JIS として読んだ「�」が2文字
- �e� fgge
- Shift_JIS を EUC-JP として読んだ「�」が1文字
- 「ニ「� 。ヌ。ネ。ネ。ニ
- EUC-JP を UTF-8 として読んだ「�」が20文字
- 脱��|ヂ№奪��達�達�達展脱��|�� 達��達�達�達束竪族村達��辰損�達�達他達��
- UTF-8 を EUC-JP として読んだ「�」が6文字
- ���Ƣ� �ǡȡȡ�
- UTF-8 を Shift_JIS として読んだ「�」が9文字
- ���e�� �f�g�g�e
よくある質問
なぜ文字化けは起きるのですか?
文字を保存するときに使った決まり(文字コード)と、読むときに使った決まりが食い違うためです。文字はいったんバイトの並びになって保存されますが、同じバイトの並びでも、どの決まりで読むかによって別の文字になります。だから直し方も決まっていて、化けた文字列を読むときに使われた決まりでバイトに戻し、正しい決まりで読み直せば元に戻ります。
戻らない文字があるのはなぜですか?
化けた時点で、その文字のバイトが捨てられているためです。読むときに使った決まりで解釈できないバイトがあると、多くのソフトはそこを「�」という記号に置き換えます。置き換えた時点で元のバイトは消えているので、画面に出ている「�」からは何も復元できません。「�」は化けた文字ではなく、文字が失われた跡です。この道具は、その数を数えて先にお伝えします。
どの化け方なら完全に戻りますか?
UTF-8 の文章を Windows-1252 として読んでしまった型です。「æ–‡å—化ã‘」のような形になります。この決まりは1バイトが必ず1文字に対応するので、バイトがひとつも失われません。海外製のソフトやメール、CSV でよく起きる型で、実際にいちばん多いものでもあります。逆に「譁?ュ怜喧縺」のような形は、Shift_JIS として読めなかったバイトがすでに捨てられているため、完全には戻りません。
候補がいくつも出るのはなぜですか?
どの決まりの取り違えで化けたのかは、化けた文字列だけからは確実には決められないためです。1つだけ返す作りにすると、外れたときに利用者が打つ手を失います。当てはまりそうな順に並べて、それぞれ何文字戻せなかったかを添えているので、読める候補を選んでください。
貼り付けた文章はどこかに送られますか?
送られません。変換はすべてこの画面の中(お使いの機器の中)で行っています。文章がこの機器から出ることはないので、未公開の原稿や社内の文書でもそのまま貼り付けられます。
文字化けは「読み方の取り違え」で起きています
文字は、保存されるときにいったんバイトの並びになります。 どの文字をどのバイトにするかを決めているのが文字コードで、 UTF-8・Shift_JIS・EUC-JP などいくつもあります。
同じバイトの並びでも、読むときに別の決まりを当てると別の文字になります。 たとえば「文字」を UTF-8 で保存するとE6 96 87 E5 AD 97 という6バイトになりますが、 これを Windows-1252 という決まりで読むと1バイトずつ別の文字に割り当てられ、æ–‡å— と表示されます。化けたのではなく、同じバイトを別の決まりで読んだだけです。
だから直し方も決まっています。 画面の文字を「読むときに使われた決まり」でバイトに戻し、正しい決まりで読み直す。 この道具がやっているのはそれだけです。
「�」が出ていたら、そこはもう戻りません
読むときに使った決まりで解釈できないバイトがあると、 多くのソフトはそこを「�」(U+FFFD)という記号に置き換えます。 置き換えた時点で、元のバイトは捨てられています。
つまり画面に出ている「�」は、化けた文字ではなく、文字が失われた跡です。 跡からは元のバイトを知りようがないので、どんな道具を使っても復元できません。 「文字化け 復元」で見つかる道具の多くはここを説明せず、 欠けたままの文を「変換しました」と返します。
戻したい文章がまだ元のファイルとして残っているなら、画面の文字ではなくファイルから開き直すのが確実です。 エディタで文字コードを指定して開き直せば、バイトは失われていないので完全に戻ります。
よくある化け方の見分け
| 見た目 | 何が起きたか |
|---|---|
| æ–‡å—化ã‘アルファベットに記号が付いた形 | UTF-8 を Windows-1252 として読んだもの。完全に戻せます。海外製のソフトやメールで多い |
| 譁?ュ怜喧縺見慣れない漢字と半角カナが混ざる | UTF-8 を Shift_JIS として読んだもの。読めなかったバイトが捨てられているので、 完全には戻りません |
| ????????記号だけが並ぶ | 日本語のバイト列を UTF-8 として読んだもの。 ほとんどのバイトが捨てられているので、まず戻りません |
|  が先頭に付く1行目の頭だけおかしい | BOM という目印が文字として読まれたもの。先頭の3文字を消すだけで直ります |