文字化けを直す・復元する
UTF-8 の文章を Windows-1252 として読んだ形です。海外製のソフト・メール・CSV。いちばん多く、完全に戻せる型。 ただし 10文字 が「�」のままです。 その部分は貼り付けの時点で失われています。
上が外れているときは、こちらを見てください。並びは当てはまりそうな順です。
- EUC-JP を Shift_JIS として読んだ「�」が2文字
- �e� fgge
- Shift_JIS を EUC-JP として読んだ「�」が1文字
- 「ニ「� 。ヌ。ネ。ネ。ニ
- Shift_JIS を UTF-8 として読んだ「�」が5文字
- テヲ窶凪�。テ・ツュ窶氾・ナ停�禿」窶佚」窶氾」ナクテヲ窶凪�。テァツォ テ」窶壺�凖」窶愿」窶愿」ツォティツイツシテ」窶塲�テ、ツサヒ愿」窶佚」ツセテ」邃「
- UTF-8 を Shift_JIS として読んだ「�」が9文字
- ���e�� �f�g�g�e
- UTF-8 を EUC-JP として読んだ「�」が6文字
- ���Ƣ� �ǡȡȡ�
よくある質問
「ã‚¢」「テ」のような文字列は、どう直せばいいですか?
UTF-8 で書いたカタカナを Windows-1252 として読んだ形です。たとえば「テスト」は「テスト」です。この画面に貼ると、1番目の候補で元に戻ります。この型は1バイトが必ず1文字に対応していて、バイトがひとつも失われていないので、完全に戻せます。
「テ」ツつ」のような半角カナの文字列は何ですか?
二重に化けた形です。UTF-8 の文を ISO-8859-1 として読んで「ã¢」のようになった文を、そのまま UTF-8 で保存し、さらに Shift_JIS として読むと「テ」ツつ」の並びになります。画面の文字からは2段階ぶんの情報が失われているので、元のファイルがあるなら文字コードを UTF-8 に指定して開き直すのが確実です。
なぜ文字化けは起きるのですか?
文字を保存するときに使った決まり(文字コード)と、読むときに使った決まりが食い違うためです。文字はいったんバイトの並びになって保存されますが、同じバイトの並びでも、どの決まりで読むかによって別の文字になります。だから直し方も決まっていて、化けた文字列を読むときに使われた決まりでバイトに戻し、正しい決まりで読み直せば元に戻ります。
戻らない文字があるのはなぜですか?
化けた時点で、その文字のバイトが捨てられているためです。読むときに使った決まりで解釈できないバイトがあると、多くのソフトはそこを「�」という記号に置き換えます。置き換えた時点で元のバイトは消えているので、画面に出ている「�」からは何も復元できません。「�」は化けた文字ではなく、文字が失われた跡です。この道具は、その数を数えて先にお伝えします。
どの化け方なら完全に戻りますか?
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 として読んだ | 貼ると1番目の候補で元に戻る(「�」なし) |
| æååãã®ãã¹ã | UTF-8 の文を ISO-8859-1 として読んだ。見えない制御文字が混ざる | 貼ると1番目の候補で元に戻る(「�」なし) |
| 譁�ュ怜喧縺代�繝�せ繝�「�」が4文字 | UTF-8 の文を Shift_JIS として読んだ | 化けた時点で4文字が失われている。候補は出るが完全には戻らないので、元のファイルを文字コードを指定して開き直す |
| �絖�����鴻「�」が6文字 | UTF-8 の文を EUC-JP として読んだ | 化けた時点で6文字が失われている。候補は出るが完全には戻らないので、元のファイルを文字コードを指定して開き直す |
| ���������̃e�X�g「�」が11文字 | Shift_JIS の文を UTF-8 として読んだ | 化けた時点で11文字が失われている。候補は出るが完全には戻らないので、元のファイルを文字コードを指定して開き直す |
| ʸ�������Υƥ���「�」が10文字 | EUC-JP の文を UTF-8 として読んだ | 化けた時点で10文字が失われている。候補は出るが完全には戻らないので、元のファイルを文字コードを指定して開き直す |
| ハクサ嵂ス、ア、ホ・ニ・ケ・ネ | EUC-JP の文を Shift_JIS として読んだ。半角カナが並ぶ | 候補は出るが完全には戻らない(同じ字に複数のバイト列が対応していて、元の並びに戻せない)。元のファイルを文字コードを指定して開き直す |
| テヲツ鳴�・ツュツ療・ツ個姪」ツ�妥」ツ�ョテ」ツδ�」ツつケテ」ツδ�「�」が5文字 | 二重に化けた形。ISO-8859-1 として読んだ文を UTF-8 で保存し、Shift_JIS として読んだ | 化けた時点で5文字が失われている。候補は出るが完全には戻らないので、元のファイルを文字コードを指定して開き直す |
| 文å—化ã‘ã®ãƒ†ã‚¹ãƒˆ | 先頭に  が付く。BOM という目印が文字として読まれた | 貼ると1番目の候補で元に戻る(「�」なし) |