› ツール一覧 › 文字化け再現ビューア
TOOL

文字化けビューア

その化け方には、名前がある。
どの文字コードを、どう読み違えたのか。

化け方を見る 原因を逆引き なぜ化けるのか よくある質問

文字化けは、ランダムに壊れているわけではありません。どの文字コードで書かれたバイト列を、どの文字コードだと思って読んだか——その組み合わせごとに、決まった見た目になります。見慣れれば、化けた文字を見ただけで原因の見当がつきます。ここでは正しい文字列から化け方を再現し、逆に化けた文字列から原因を推定して復元します。すべてブラウザ内で処理しています。

化け方を見る

正しい文字列を入れると、取り違えたときの姿が並びます

バイト列

原因を逆引き

化けた文字列から、元の文字列と原因を推定します

元の変換で文字が失われている場合(? や □ になっている場合)は、原理的に元へ戻せません。復元できるのは「バイト列は無事だが読み方を間違えた」種類の化けだけです。

なぜ化けるのか

コンピュータが保存しているのは文字ではなくバイトの並びです。「東」という文字をどのバイトで表すかは文字コードごとに違い、UTF-8では3バイト、Shift_JISとEUC-JPでは2バイトになります。

ここで、書いたときと読むときで文字コードの想定がずれると、同じバイト列が別の区切りで解釈されます。3バイトずつ並んだものを2バイトずつ読めば、文字の切れ目そのものがずれる。結果として、意味のない漢字や記号が延々と並びます。データは壊れていません。読み方だけが間違っている——だから正しく読み直せば元に戻ります。

やっかいなのはもう1種類、変換の時点で文字が失われる化けです。絵文字やサロゲートペア(𠮷・𩸽)はShift_JISに存在しないため、Shift_JISへ変換した瞬間に捨てられて ? になります。こちらは後から復元できません。入力欄で弾くか、最後までUTF-8で通す必要があります。実際にどの文字が落ちるかは 意地悪テストデータ生成器 の文字種カタログで試せます。

よくある質問

入力した文字列はサーバーに送られますか?+
送られません。変換も逆引きもすべてブラウザ内(あなたの端末上)で処理していて、サーバーには一切送信していません。本番データの一部を貼り付けても大丈夫です。
「譁?蟄怜喧縺?」のような化け方は何が起きていますか?+
UTF-8で書かれたバイト列を、Shift_JISだと思って読んだときの典型的な見た目です。UTF-8の日本語は1文字3バイトなので、2バイトずつ区切るShift_JISで読むと文字の切れ目がずれ、意味のない漢字が並びます。読み込み側の文字コード指定を疑ってください。
「æ±äº¬」のように記号が並ぶ化け方は?+
UTF-8のバイト列を、Latin-1(ISO-8859-1)やWindows-1252として1バイトずつ読んだ結果です。海外製のライブラリやメールヘッダ、古いCSV取り込みでよく出ます。バイトそのものは壊れていないため、正しい文字コードで読み直せば完全に元に戻ります。
「???」や「□」ばかりになるのはなぜですか?+
これは読み違いではなく、変換時に文字が失われた状態です。絵文字やサロゲートペア(𠮷・𩸽)はShift_JISに存在しないため、変換の時点で捨てられます。この場合は元に戻せません。保存する前の入り口で弾くか、UTF-8のまま扱う必要があります。
逆引きはどうやって原因を当てているのですか?+
化けた文字列を各文字コードでバイト列に戻し、それを別の文字コードで読み直す組み合わせを総当たりで試しています。その結果に日本語らしい文字がどれだけ含まれるかで点数をつけ、上位を候補として表示します。元の変換で文字が失われている場合は完全には戻りません。

どの文字が変換で落ちるかを確かめたいときは 意地悪テストデータ生成器、入力欄まわりの観点は TESTパターン集、バリデーションの正規表現は 正規表現テスター をどうぞ。