仕組み

文字化けを直す方法:「テスト」は戻せて「繝」は戻せない理由

更新日:2026-09-17

文字化けした文字列を見ると、なんとかして元に戻したくなります。ただし戻せる化け方と戻せない化け方があります。違いを整理します。

文字化けはなぜ起きるか

文字はコンピュータの中ではバイト列です。同じバイト列でも、どの文字コードで読むかによって別の文字になります。

書いたときと違う文字コードで読むと、意味の通らない文字が並びます。これが文字化けです。

「テスト」をUTF-8で書き、windows-1252で読んだ場合

UTF-8のバイト列 … E3 83 86 E3 82 B9 E3 83 88
windows-1252 は1バイト=1文字として読む
テスト(9文字)

戻せる化け方

上の例は戻せます。windows-1252 はすべてのバイト値に文字が割り当てられているため、9バイトが9文字として全部残っているからです。

逆の手順をたどれば復元できます。

  1. 化けた文字列を windows-1252 でバイト列に戻す → E3 83 86 ...
  2. そのバイト列を UTF-8 として読む → テスト

Web でいちばんよく見る「テスト」型の化け方は、このパターンです。iso-8859-1 で読んだ場合も同様に戻せます。

戻せない化け方

同じ「テスト」を UTF-8 で書き、Shift_JIS として読んだ場合はどうなるか。

読めなかったバイトは捨てられます

Shift_JIS には、どの文字にも当てはまらないバイトの並びがあります。読み取る側はそこで置換文字(U+FFFD、多くは「�」と表示される)を置きます。このとき元のバイトの値は失われます。何バイトが何に化けたのかも残りません。

置換文字が混じった時点で、その位置の情報は復元できません。前後の文脈から推測することはできても、確実に戻す方法はありません。

当サイトのツールは、置換文字を含む入力に対しては候補を出さず、戻せない理由を返します。もっともらしい候補を出すと、間違った復元を正解だと思って使うことになるためです。

戻せるかどうかの見分け方

化けた見た目戻せるか理由
テスト のようなラテン文字の羅列戻せるバイトが全部残っている
テのような記号混じり戻せることが多い同上
� や □ が混じっている戻せないその位置のバイトが失われている
?????? になっている戻せない同上

候補の選び方:往復検証

化け方のパターンは複数あるため、機械的に戻すと候補が複数出ます。どれが正しいかをどう決めるか。

当サイトのツールでは往復検証をしています。

往復検証の手順

① 候補の組み合わせで復元してみる
② 復元した文字列を、同じ道順でもう一度化けさせる
③ その結果が入力と一致すれば、その候補は筋が通っている

見た目の読みやすさだけで順位をつけると、たまたま日本語っぽく見える誤った候補が1位になることがあります。往復して一致するかどうかを見ると、そういった候補を下げられます。

読みやすさの点数付け

往復検証に加えて、復元した文字列の「日本語らしさ」も点数にしています。ひらがな・カタカナを漢字より重く見ているのは、意味のない漢字の羅列が上位に来るのを防ぐためです。

絵文字や拡張漢字は減点していません。減点すると、絵文字を含む文字列を「戻す前のほうが読みやすい」と判定してしまい、戻せなくなるためです。

そもそも化けさせないために

  • ファイルを保存するときの文字コードを UTF-8 にそろえる
  • CSVを表計算ソフトで開くなら BOM 付きUTF-8 にする(CSVがExcelで化ける理由
  • 受け渡しの前に、相手のシステムが対応している文字コードを確認する

化けてしまったものを戻すより、化けない形で渡すほうが確実です。

まとめ

  • 文字化けは、書いたときと違う文字コードで読むと起きる
  • バイトが全部残っている化け方(テスト型)は戻せる
  • 置換文字が混じった化け方は、その位置のバイトが失われていて戻せない
  • 候補の順位は往復検証で決めると、誤った候補が1位になりにくい

貼り付けるだけで変換できます。形式がわからない文字列は自動で判定します。入力内容はサーバーに送信されません。

テキスト変換で試す →

登録不要・完全無料/入力内容はサーバーに送信されません

この記事を書いた人

都内在住。Web制作・デザインに20年以上携わり、現在はインハウスでWeb制作や改善業務に関わっています。文字コードまわりの不具合に何度も当たってきたので、調べ直した内容を手元のメモとしてまとめ直したものを発信しています。

この記事の位置づけ

仕様と一般的な動作を整理したものです。実際の挙動はブラウザやアプリの実装、受け取り側のシステムによって変わることがあります。業務で使う場合は、実際のデータで往復して確かめておくと安全です。

参考・出典

※2026年9月時点の仕様と、主要なブラウザでの動作にもとづいています。