調べて分かる道具箱

文字化けを直す・復元する

いちばん当てはまりそうな直し方文字化���文� を���貼り付���

UTF-8 の文章を Windows-1252 として読んだ形です。海外製のソフト・メール・CSV。いちばん多く、完全に戻せる型。 ただし 10文字 が「�」のままです。 その部分は貼り付けの時点で失われています。

ほかの候補

上が外れているときは、こちらを見てください。並びは当てはまりそうな順です。

EUC-JP を Shift_JIS として読んだ「�」が2文字
�e� fgge
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番目の候補で元に戻る(「�」なし)