「�」「?」の文字化けは戻せる?|欠けた文字の復元と、戻せない文字化けの見分け方
文字化けした文に「�」(黒いひし形に?)が交じっていると、もう戻せないと思いがちです。実は「�」の所で失われたのは多くの場合1バイトだけで、文字コードの決まりと前後の文脈から、元の文字をかなりの確率で推測できます。一方、「?」や「・」に置き換わって保存されたもの、「�」ばかりの文字化けは戻せません。この記事では、「�」が出る理由と推測で補える仕組み、戻せる・戻せないの見分け方、文字化けを悪化させない注意点をまとめます。
「�」は読めなかったバイトの代わりに出る記号
「�」はUnicodeのU+FFFD(置換文字)という記号で、ソフトがバイトを文字として読めなかったときに、その代わりに表示されます。文字コードの決まりに合わないバイトの並びが出てきたとき、ソフトは読めなかった所を「�」に置き換えて先へ進みます。
よく見るのは、UTF-8の日本語をShift_JISで開いたときです。UTF-8のひらがな・漢字は1文字3バイト、Shift_JISは2バイトずつ区切って読むので、区切りがずれていきます。ずれた結果、Shift_JISに存在しないバイトの組み合わせになった所や、最後に1バイトだけ余った所が「�」になります。「文字化け」なら「譁�ュ怜喧縺�」、「会議の資料」なら「莨夊ュー縺ョ雉�侭」です。
「�」が交じっていても推測で補える仕組み
UTF-8には、「先頭のバイトで何バイトの文字かが決まり、続きのバイトは80〜BFの範囲」という決まった形があります。化けた文を逆にたどると、「この文字は3バイトのうち2つ目が欠けている」のように、欠けたバイトの数と位置が分かります。さらに、Shift_JISで読んだときに本当に「�」になるバイトだけに候補を絞れます。
残った候補を1つずつ当てはめて、日本語として自然な文字(よく使う漢字やひらがな)になるものを選ぶのが、文字化け 復元・解読ツールの補い方です。実際に試すと次のようになりました。
| 化けた文字 | 補った結果 | 補った文字 | ほかの候補の例 |
|---|---|---|---|
| 莨夊ュー縺ョ雉�侭 | 会議の資料 | 資料 | 賃料・賄料 |
| 螻ア逕ー螟ェ驛�,譚ア莠ャ驛ス蜊�サ」逕ー蛹コ | 山田太郎,東京都千代田区 | 郎・千代 | — |
| 譏取律縺ョ莨夊ュー縺ョ雉�侭繧帝√j縺セ縺吶ゅh繧阪@縺上♀鬘倥>縺励∪縺吶� | 明日の会議の資料を送ります。よろしくお願いします。 | 資料・。 | — |
| 譁�ュ怜喧縺� | 文字化た | 文字・た(本当は「け」) | い・か・す・け |
最後の例のように、文の終わりの1文字は前後の手がかりが少なく、外れることがあります。補った文字は黄色で示され、押すとほかの候補に入れ替えられるので、文脈に合わないものは選び直してください。文が長いほど手がかりが増えて、当たりやすくなります。
戻せない文字化けの見分け方
推測で補えるのは、化けた文字の大部分に元のバイトが残っているときだけです。次のような状態は、元の情報が失われているので戻せません。
- 「?????」のように「?」ばかり:文字コードを変換して保存したときに、表せない文字が「?」に置き換えられた。元の文字の情報は残っていない
- 「�」ばかり(「������」など):Shift_JISやUTF-8の文章をEUC-JPで読んだときに多い。ほぼすべてのバイトが「�」になり、残っていない
- 「�e�X�g」のように英数字と「�」が交互:2バイトのうち1バイト目が失われ、残っているのは2バイト目だけ(この例は「テスト」)
- 「譁・ュ怜喧縺・」のように「・」が交じる:Excelなどが「�」の代わりに「・」で表示し、そのまま保存・コピーされた。本物の「・」と区別がつかないので補えないことが多い
ツールで戻せなかった文字は、ゲタ記号「〓」で示します。〓が多いときは、化けた文字から戻すのはあきらめて、元のファイルやメールを手に入れて正しい文字コードで開き直すのが確実です。
2回化けた文字化けと「�」
一度化けた文章を保存し、それをまた別の文字コードで読むと、2回化けた文字化けになります。たとえば、UTF-8をShift_JISで読んで化けた「譁�ュ怜喧縺�」をUTF-8で保存し、それをLatin-1で読むと「èï¿½ï½æ€œå–§ç¸ºï¿½」になります。
「�」は「�」をUTF-8で保存したバイト(EF BF BD)をLatin-1で読んだもので、2回化けたしるしです。ツールは2回分の化け方も総当たりで試すので、この例も「文字化た」まで戻り、最後の1文字を候補から選び直せば元の文になります。ただし3回以上化けたものや、途中で「?」に置き換わったものは戻せないことがあります。
文字化けを悪化させないための注意
- 1
化けたまま上書き保存しない
化けて表示されているファイルを保存すると、「�」の所の元のバイトが失われます。気づいたら保存せずに閉じ、文字コードを指定して開き直します。
- 2
元のファイルやメールを残しておく
変換や修正をするときは、元のファイルをコピーしてから作業します。元があれば、化けた文から推測しなくても確実に戻せます。
- 3
「�」も含めてそのまま貼り付ける
化けた文をツールに貼るときは、「�」を消したり、読める部分だけを抜き出したりしないでください。「�」の位置が補うための手がかりになります。
どの文字コードの取り違えで化けたかは、文字化けのパターン早見表で確かめられます。CSVをExcelで開いて化けたときは、CSVがExcelで文字化けするときの直し方の手順で開き直すと、「�」を推測するまでもなく元の文字が読めます。
よくある質問
- 文字化けの「�」は何ですか?
- UnicodeのU+FFFD(置換文字)で、ソフトがバイトを文字として読めなかった所に表示される記号です。文字コードを取り違えて開いたときに、決まりに合わないバイトの並びが「�」に置き換えられます。
- 「�」が交じった文字化けは元に戻せますか?
- UTF-8をShift_JISで開いたときの「�」なら、多くの場合は推測で補えます。欠けたのは1文字につき1バイト程度で、UTF-8の決まりから候補を絞れるためです。ただし文の終わりなど手がかりの少ない所は外れることがあります。
- 「?」に変わった文字は戻せますか?
- 戻せません。文字コードを変換して保存したときに、表せない文字が「?」に置き換えられ、元の文字の情報が残っていないためです。元のファイルがあれば、そちらを正しい文字コードで開き直してください。
- 「�」という文字化けは何ですか?
- 「�」をUTF-8で保存したバイト(EF BF BD)を、Latin-1(Windows-1252)で読んだものです。一度化けた文章がさらにもう一度化けた(2回化けた)しるしで、2回分を逆にたどれば戻せることがあります。
この記事で紹介したツール
あわせて読みたい
文字化けのパターン早見表|縺・ã・‚ƒ・$B から原因の文字コードを見分ける
「縺薙s縺ォ縺。縺ッ」「日本語」「‚±‚ñ‚É‚¿‚Í」のような文字化けは、でたらめに見えて実は規則どおりに化けています。最初に出てくる文字を見れば、どの文字コードをどれと取り違えたのかがほぼ分かります。この記事では、よく見る化け方7通りを例つきの早見表にまとめ、それぞれが起きる理由と、戻せる化け方・戻せない化け方の見分け方を説明します。
記事を読む →%E3%81%82・\u3042・\343の読み方|URL・JSON・gitで日本語が符号になる理由
URLをコピーしたら「%E6%96%87%E5%AD%97」、APIの返り値を見たら「\u6587\u5b57」、gitのファイル名が「\346\226\207」。どれも文字化けに見えますが、日本語が壊れたのではなく、日本語のバイトや番号を英数字で書き表した「符号」のまま見えている状態です。この記事では、よく見る9種類の書き方の見分け方と読み方、どこで出てくるのか、表示を日本語にする設定をまとめます。
記事を読む →メールの件名が文字化けする原因と直し方|=?UTF-8?B?・=?ISO-2022-JP?B?・$Bの読み方
受け取ったメールの件名が「=?UTF-8?B?5paH5a2X…?=」のような英数字になっていたり、本文が「$BL@F|$N…(B」になっていたりすることがあります。これはメールで日本語を送るための決まった書き方が、そのまま見えている状態です。この記事では、件名の=?…?=の仕組み、B方式とQ方式の違い、JISメールの$B、本文の文字化けの原因と、送る側でできる対策をまとめます。
記事を読む →