文字化けの判定と復元
【ご注意】このページの計算結果・情報は参考値です。正確性・最新性は保証できません。税務・法務・お金・設計・施工・安全などに関わる判断は、公式の資料と専門家の確認のうえ、ご自身の責任で行ってください。免責事項
文字化けした文字列を貼り付けると、どの読み違いで壊れたかを判定し、復元できるものは元の日本語に戻します。戻せない場合は、なぜ戻せないのかを表示します。入力した文字はブラウザの中だけで処理され、どこにも送信されません。
文字化けの判定と復元ツール
復元のしくみ
文字化けは「ある文字コードで保存したバイトの並びを、別の文字コードとして読んでしまった」状態です。元に戻すには、化けた文字をいったんバイトの並びに戻し、正しい文字コードで読み直すことになります。ところがブラウザには Shift_JIS や EUC-JP へ書き出す機能がありません。そこでこのツールは、ブラウザが持つ読み取り機能を使って逆引きの対応表を実行時に組み立ててから戻します。Shift_JIS の表は約9,400文字ぶんで、作るのに10ミリ秒ほどです。
戻せない場合があります。バイトの並びが読み違えた文字コードとして成立しないとき、その部分は「□(U+FFFD)」という記号に置き換えられ、元のバイトは永久に失われます。この記号が含まれていたら、どんな方法でも復元できません。元のファイルやメールから取り直すしかありません。このツールは失われた文字の数を数えて表示します。
文字化けのパターンと見分け方
| 見た目 | 原因 | 復元 |
|---|---|---|
| 譁‰蟄怜喧 のような漢字の羅列 | UTF-8 を Shift_JIS として読んだ | □が無ければ可能 |
| 日本語 のような記号混じり | UTF-8 を Latin-1 として読んだ | ほぼ常に可能 |
| ÊüËܸì のようなアクセント付き | EUC-JP を Latin-1 として読んだ | 条件により可能 |
| □□□ や ??? ばかり | 変換時に情報が失われた | 不可能 |
| 日 のような数字 | HTML実体参照が展開されていない | 別の処理が必要 |
| %E6%97%A5 のような並び | URLエンコードされたまま | URLデコードで戻る |
なぜ起きるのか
| 場面 | よくある原因 | 予防 |
|---|---|---|
| CSVを開いたら化けた | UTF-8のファイルを表計算ソフトがShift_JISと判断した | BOM付きUTF-8で保存する |
| メールの本文が化けた | 文字コードの宣言と中身が食い違っている | 送信側の設定を確認する |
| Webページが化けた | HTMLのcharset宣言が実際と違う | meta charset を UTF-8 に |
| データベースから読むと化けた | 接続時の文字コード設定が違う | 接続文字セットを合わせる |
| ZIPを解凍したらファイル名が化けた | 圧縮側と解凍側で文字コードが違う | 解凍ソフトで文字コードを指定 |
復元できるかどうかの判断
| 入力の状態 | 復元の可否 | 理由 |
|---|---|---|
| □(U+FFFD)を含まない | 多くの場合できる | バイトの情報が残っている |
| □ を1つでも含む | その部分はできない | 元のバイトが消えている |
| Latin-1 パターン | ほぼ常にできる | 256文字すべてが1対1で対応する |
| Shift_JIS パターン | □ が無ければできる | 成立しないバイト列が □ になるため |
| 二重・三重に化けている | 順に戻せば可能な場合がある | 結果を再度このツールに入れる |
※入力した文字列はお使いのブラウザの中だけで処理され、サーバーには送信されません。変換結果は参考です。正式な書類やシステムへの登録には、提出先が定める表記規則をご確認ください。
文字化けの判定と復元の詳しい解説
文字化けは、文字をバイトの並びに変換する規則、つまり文字コードの食い違いから起きます。「日本語」という3文字は、UTF-8 では9バイトの並びとして保存されます。このバイト列を Shift_JIS だと思って読むと、まったく別の文字として解釈され、意味不明の漢字が並びます。データそのものは壊れておらず、読み方だけが間違っているのですから、正しく読み直せば元に戻る、というのが復元の原理です。
ところが、ここに落とし穴があります。読み違えたバイトの並びが、その文字コードとして成立しないことがあるのです。たとえば UTF-8 のバイト列には、Shift_JIS では意味を持たない組み合わせが含まれます。読み込んだソフトはこれを処理できず、「□」という置き換え文字に差し替えます。このとき元のバイトの値は捨てられ、二度と取り出せません。画面に「□」が見えている文字化けは、その部分について復元が原理的に不可能です。多くの復元ツールが黙って失敗するのはこのためで、このツールは失われた文字の数を数え、なぜ戻せないのかを明示するようにしています。
パターンによって復元しやすさが違います。最も戻しやすいのが Latin-1 として読まれた場合で、これは1バイトの値と文字が1対1で対応しているため、情報が一切失われません。「日本語」のようにアクセント記号やチルダが混じった見た目になり、ほぼ確実に元に戻せます。一方、Shift_JIS として読まれた場合は「譁‡蟄怜喧」のような漢字の羅列になり、□が含まれていなければ戻せますが、含まれていれば部分的に諦めるしかありません。
ブラウザで復元を行うには技術的な工夫が要ります。ブラウザには文字コードを読み取る機能はありますが、Shift_JIS や EUC-JP へ書き出す機能はありません。UTF-8 にしか書き出せないのです。そこでこのツールは、読み取り機能を逆向きに使います。あり得るバイトの組み合わせをすべて読ませて、どの文字になるかを記録し、文字からバイトを引く表を作ります。Shift_JIS の場合で約9,400文字ぶんの表ができ、作るのに10ミリ秒ほどしかかかりません。一度作った表は使い回すので、入力するたびに作り直すことはありません。
実際のところ、戻せないほうが多数派です。代表的な日本語を Shift_JIS 誤読のパターンで試したところ、「こんにちは」は完全に戻せた一方、「ありがとう」「テスト」「お世話になります」「もじばけ」はいずれも □ を含んでいて戻せませんでした。5例中4例が復元不可という結果で、短い文でもバイトの並び次第で成否が分かれます。「戻せたらもうけもの」くらいに考え、元データの確保を優先してください。
予防のほうが復元より確実です。CSVを表計算ソフトで開くと化けるのは、ファイルの先頭に文字コードの目印がなく、ソフトが Shift_JIS だと推測してしまうためです。UTF-8 で保存するときに BOM という3バイトの目印を付けておけば、正しく判別されます。Webページなら meta charset の宣言を実際の保存形式と一致させ、データベースなら接続時の文字コード設定を揃えます。文字化けが起きてから直すのは、情報が失われている可能性がある以上、常に後手の対応になります。
業界・現場での使い方
受け取ったCSV・テキストの復旧
取引先から届いたファイルが化けているとき、パターンを判定して元に戻します。
メール本文の読み取り
古いシステムから送られたメールの本文が化けている場合に復元を試みます。
システム移行時の確認
移行後のデータが化けていないか、化けていたらどのパターンかを特定します。
復元できるかどうかの切り分け
□が含まれていれば元データから取り直す、という判断を早い段階で下せます。
よくある間違い・注意点
- □が出ていても復元できると思う — □は元のバイトが消えた印です。その部分は原理的に戻せません。
- 化けた文字をコピーし直して悪化させる — 画面からのコピーで情報が増えることはありません。元のファイルから取り直します。
- 文字コードを指定せずに保存し直す — 化けたまま保存すると、化けた状態が確定します。
- すべての文字化けが同じ原因だと思う — Latin-1 と Shift_JIS では見た目も復元可否も違います。
- URLエンコードやHTML実体参照を文字化けと混同する — %E6%97%A5 や 日 は別の処理で戻します。
関連する規格・公的資料
- Unicode コンソーシアム — Unicode の規格と文字の定義
- W3C(World Wide Web Consortium) — Web の文字コードとエンコードの標準
- WHATWG Encoding Standard — ブラウザが扱う文字エンコードの仕様
- IETF(RFC の発行元) — RFC 3986(URI)・RFC 4648(Base64)などの規格
- 日本産業標準調査会(JISC) — JIS X 0208・JIS X 0213 など日本語文字集合の規格
- 日本規格協会(JSA) — JIS 規格票の発行
- 情報処理推進機構(IPA) — 文字情報基盤と文字コードの解説
- 文化庁 — 常用漢字表・国語施策
- 外務省 — パスポートのヘボン式ローマ字表記
- 国立国語研究所 — 日本語表記の研究
- e-Gov 法令検索 — ローマ字のつづり方(昭和29年内閣告示)など
- MDN Web Docs — encodeURIComponent・TextDecoder などの仕様解説
- WHATWG Encoding Standard(置換文字の扱い) — 復号できないバイトが U+FFFD になる規定
- Unicode 置換文字 U+FFFD — 情報が失われたことを示す記号
- IPA 文字情報基盤 — 日本語の文字コードの解説
※本ツールは公的基準に基づく参考計算です。医療・法務・税務の判断は最新の告示・規格および専門家の判断に従ってください。
よくある質問(FAQ)
文字化けはなぜ起きるのですか?
保存したときの文字コードと、読むときの文字コードが違うためです。データ自体は壊れていないことが多くあります。
□(四角)が出ていても直せますか?
直せません。□は元のバイトが消えた印で、その部分は原理的に復元できません。元のファイルから取り直してください。
どのパターンか分からないときは?
「すべて試して一番それらしいものを選ぶ」を選んでください。日本語が最も多く復元できた方法を自動で選びます。
Latin-1 パターンとは何ですか?
UTF-8 のバイトを1バイトずつ別の文字として読んだ状態です。情報が失われないので、ほぼ確実に復元できます。
二重に化けている場合は?
一度復元した結果をもう一度このツールに入れてみてください。順に戻せる場合があります。
入力した文字列は送信されますか?
送信されません。復元はすべてお使いのブラウザの中で行っています。
CSVが毎回化けるのを防ぐには?
UTF-8 で保存するときに BOM を付けると、表計算ソフトが正しく判別します。
%E6%97%A5 のような文字列も直せますか?
それは URL エンコードです。URLエンコードのツールでデコードしてください。
復元した文字が一部だけおかしいのですが
その部分だけ情報が失われている可能性があります。失われた文字の数を確認してください。