文字化けパターン早見表 — 縺ゅ↑・é・、「、ハ の化け方から原因と直し方を引く
「縺ゅ↑縺�」「é」「、「、ハ、ソ」— 画面に出ている化けた文字列そのものから、元の文字と原因(実際のエンコーディングと、誤読したエンコーディングのペア)を引く早見表です。理屈ではなく見えているものの順に並べ、日本語を先頭に、欧文・中国語・韓国語・ロシア語も載せました。
使い方は3ステップです。表から自分の化け方に近い行を探す。「実際 → 誤読」のペアを読む。化けた文字列を誤読側でバイト列に戻し、実際側でデコードし直す。どれも「バイト列を別のエンコーディングで読んだ」同じ事故なので、ペアさえ分かれば戻し方は機械的です。
先にルールをひとつ。文字の代わりに「�」(Unicodeの置換文字、U+FFFD)や「?」が並んでいるなら、バイト列はすでに捨てられていて、この表では戻せません。古いコピーを探してください。ただし、見覚えのあるパターンの末尾に「�」が1つ付くだけなら表示側の都合で、ファイルは無事です。
日本語の文字化けパターン一覧 — 縺・繧・繝、ã�‚、半角カナ、銇傘仾
日本語はUTF-8のほかにShift_JIS(Windows版がCP932)とEUC-JPが現役なので、化け方の種類がどの文字体系より多くなります。
- 縺・繧・繝の列に半角カナが混じる(縺ォ、繝シ): UTF-8をShift_JIS(CP932)として読んだ状態。UTF-8のひらがなは0xE3 0x81か0xE3 0x82で始まり、Shift_JISではこの2バイトが縺か繧です。カタカナは繧か繝、漢字は譌・譛ャのような無関係な漢字になります。最も多い化け方で、完全に戻せます。末尾の「�」は表示側の都合です。
- ãのあとに�や記号が付き、かな1文字が3文字になる(ã�‚、ã‚“、æ—¥): 同じUTF-8をWindows-1252として読んだ状態。かなはã、漢字はæ・ç・è・éの組です。真ん中の「�」はWindows-1252に定義のないバイトで、ブラウザでは何も出ないこともあります。欧米ロケールの翻訳者やプレイヤーからの「日本語がこう見える」という報告の典型です。
- カーブした引用符・ƒ・Œと{ [ Qなどの半角英数が混ざる(“ú–{Œê、ƒQ�[ƒ€): Shift_JISのファイルをWindows-1252として読んだ状態。Shift_JISの1バイト目はWindows-1252の記号の行(‚ ƒ „ … † ‡ ˆ ‰ Š ‹ Œ ‘ ’ “ ” • – —)に当たり、2バイト目には半角英数が含まれます。日本語Windowsで保存したCSVを海外のメンバーが開くとこうなります。
- 半角カナが2文字ずつ並ぶ(、「、ハ、ソ、・ォ・ソ・ォ・ハ): EUC-JPをShift_JISとして読んだ状態。EUC-JPの日本語はShift_JISでは大半が1バイトの半角カナに当たるため、1文字が半角カナ2文字になります。古いサーバーのファイルをWindowsで開いたときに見ます。
- ¤や¥が1文字おきに現れる(¤¢¤Ê¤¿、¥²¡¼¥à): EUC-JPをWindows-1252として読んだ状態。ひらがなは1バイト目が0xA4(¤)、カタカナは0xA5(¥)で揃うため最も見分けやすく、漢字はÆüËܸìのような組になります。
- 中国語のような漢字ばかりになる(銇傘仾、鏃ユ湰、偁側偨、擔杮岅): 中国語Windowsのコードページ、GBKが既定のツールで開かれた状態。UTF-8をGBKとして読むと文字数が合わず末尾に�が付きやすく、Shift_JISをGBKとして読むと1文字が漢字1つになって�が出ないため一見きれいに見えます。どちらも戻せます。
- ほぼ�で、ときどき別の文字が混じる(���Ȃ�、���{��): Shift_JISをUTF-8として読んだ状態。Shift_JISのバイトの組はUTF-8としてほぼ無効なのでデコーダーが捨て、残るものは一定せず、2バイト目が半角英数ならその文字がそのまま出、隣り合う文字のバイトが偶然つながるとȂのような無関係な文字になります。開き直せば表示は戻りますが、この状態で保存されていれば戻りません。
見えているもの → 元の文字 | 実際のエンコーディング → 誤読したエンコーディング
縺ゅ↑縺� → あなた | UTF-8 → Shift_JIS (CP932)
縺薙s縺ォ縺。縺ッ → こんにちは | UTF-8 → Shift_JIS (CP932)
譌・譛ャ隱� → 日本語 | UTF-8 → Shift_JIS (CP932)
譚ア莠ャ → 東京 | UTF-8 → Shift_JIS (CP932)
ã�‚ã�ªã�Ÿ → あなた | UTF-8 → Windows-1252
ã�“ã‚“ã�«ã�¡ã�¯ → こんにちは | UTF-8 → Windows-1252
日本語 → 日本語 | UTF-8 → Windows-1252
“ú–{Œê → 日本語 | Shift_JIS → Windows-1252
“Œ‹ž → 東京 | Shift_JIS → Windows-1252
ƒQ�[ƒ€ → ゲーム | Shift_JIS → Windows-1252
、「、ハ、ソ → あなた | EUC-JP → Shift_JIS
・ォ・ソ・ォ・ハ → カタカナ | EUC-JP → Shift_JIS
¤¢¤Ê¤¿ → あなた | EUC-JP → Windows-1252
¥²¡¼¥à → ゲーム | EUC-JP → Windows-1252
ÆüËܸì → 日本語 | EUC-JP → Windows-1252
銇傘仾銇� → あなた | UTF-8 → GBK
鏃ユ湰瑾� → 日本語 | UTF-8 → GBK
偁側偨 → あなた | Shift_JIS → GBK
擔杮岅 → 日本語 | Shift_JIS → GBK
���Ȃ� → あなた | Shift_JIS → UTF-8 (欠損あり)
���{�� → 日本語 | Shift_JIS → UTF-8 (欠損あり)
�サソ (ファイル先頭) → (何もない) | UTF-8のBOM → Shift_JIS欧文の文字化けパターン — é、’、©、
欧文のアクセント付き文字の化けは、ほぼすべてUTF-8をWindows-1252(またはISO-8859-1。ブラウザは同じものとして扱います)として読んだ結果です。UTF-8はé・ü・ñを2バイトで表し、1バイト目は0xC3。1バイト=1文字のWindows-1252はこれをÃと表示するので、éはé、üはü、ñはñになります。
- Ã+1文字: アクセント付きのラテン文字。テキストは正しくUTF-8で保存され、表示側がWindows-1252を仮定しました。完全に戻せます。
- â€+1文字: カーブした引用符・三点リーダー・enダッシュ・ユーロ記号などの約物。UTF-8では3バイトで先頭が0xE2 0x80なのでâ€になり、3バイト目はアポストロフィなら™、開き引用符ならœ、三点リーダーなら¦です。閉じ二重引用符の3バイト目はWindows-1252に定義がなく、�になるか何も出ません。
- Â+記号: ©・°・«・»やノーブレークスペースはUTF-8の1バイト目が0xC2で、Windows-1252はそれをÂと表示します。記号の前の余計なÂ、空白のはずの場所のÂがこれです。
- ファイルの先頭だけに: UTF-8のBOM(一部のエディタが先頭に付ける3バイトの目印)をWindows-1252として表示したもの。他の部分は無事なので、デコードし直すのではなくBOMを取り除きます。詳細は「BOMで先頭だけ壊れる — 文字化け・キー不一致を起こす見えない1文字」で扱っています。
見えているもの → 元の文字 | 実際のエンコーディング → 誤読したエンコーディング café → café | UTF-8 → Windows-1252 über → über | UTF-8 → Windows-1252 niño → niño | UTF-8 → Windows-1252 ’ → ’ | UTF-8 → Windows-1252 “ â€� → “ ” | UTF-8 → Windows-1252 … → … | UTF-8 → Windows-1252 – → – | UTF-8 → Windows-1252 € → € | UTF-8 → Windows-1252 © → © | UTF-8 → Windows-1252 ° → ° | UTF-8 → Windows-1252  (ファイル先頭) → (何もない) | UTF-8のBOM → Windows-1252
中国語・韓国語・ロシア語の文字化けパターン
他の文字体系も理屈は同じで、先頭バイトが目印です。UTF-8では漢字が0xE4〜0xE9、ハングルが0xEA〜0xED、キリル文字が0xD0〜0xD1で始まり、Windows-1252ではそれぞれä å æ ç è é、ê ë ì í、Ð Ñになります。
- 中国語: ä å æ ç è éで始まる組(䏿–‡)はUTF-8をWindows-1252として読んだもので、漢字1つが3文字になります。Ãが出ず、アクセント付きの大文字が並ぶ(ÖÐÎÄ)のはGBKやGB2312をWindows-1252として読んだもので、漢字1つが2文字。別の漢字と�が交互に出る(涓�鏂�)のはUTF-8をGBKとして読んだものです。
- 韓国語: í・ê・ìで始まる組(한êµì–´)はUTF-8のハングルをWindows-1252として読んだもの。ハングルは0xEA〜0xEDで始まるため、組の先頭がãではなくê ë ì íになります。
- ロシア語: ÐとÑが交互に出る(Привет)のはUTF-8をWindows-1252として読んだもの(UTF-8のキリル文字は0xD0か0xD1で始まる)。元の単語と同じ文字数のアクセント付き小文字(Ïðèâåò)はWindows-1251をWindows-1252として読んだもの。РとСが交互に出る(Привет)はその鏡像で、UTF-8をWindows-1251として読んだものです。
見えているもの → 元の文字 | 実際のエンコーディング → 誤読したエンコーディング 䏿–‡ → 中文 | UTF-8 → Windows-1252 ÖÐÎÄ → 中文 | GBK → Windows-1252 涓�鏂� → 中文 | UTF-8 → GBK 한êµì–´ → 한국어 | UTF-8 → Windows-1252 Привет → Привет | UTF-8 → Windows-1252 Ïðèâåò → Привет | Windows-1251 → Windows-1252 Привет → Привет | UTF-8 → Windows-1251
二重に化けたパターン — é、’、æ—¥
上のどれより長い化け方もあります。Ã1つのはずの場所にÃ、約物のたびにâ€。欧文パターンが2回かかった状態です。仕組みは「「ãÂ?」「’」の文字化けを直す — UTF-8二重エンコードの見分け方と復元手順」で扱っているので、ここでは見分け方だけを示します。
- 接頭部で見分けます。ÃはÃの二重、ÂはÂの二重、â€はâ€の二重。1回化けた状態のおよそ2倍の長さで、すべてWindows-1252で有効な文字なので�は出ません。
- 逆変換を2回かけます。1回で止めると1回化けた状態が残り、進展したように見えるので、本当の単語になったか確認してください。
元の文字 → 1回化けた状態 → 2回化けた状態 café → café → café ’ → ’ → ’ … → … → … 日本 → 日本 → 日本
ペアが分かったあとの戻し方と、あきらめる基準
直し方はどの行でも同じです。誤読側でバイト列に戻し、実際側でデコードします。擬似コードは次のとおりです。
- 実際にはコードはほとんど不要です。たいていのエディタは「エンコーディングを指定して開き直す」ことができ、ペアの「実際」側を選べば正しく表示されます。2段階の変換が要るのは元ファイルが失われたときだけです。
- 検索置換で直さないこと。éをéに置換しても直るのはその1文字だけで、正常なテキストを壊すこともあります。デコードし直せば一度にすべて直ります。
- 戻したあと、分かっている単語で確認すること。「東京」のはずの文字列が別のパターンに化けていたら、ペアが逆か、もう1層あります。
- あきらめる基準は欠損付きで保存されていた場合です。ファイル内に�がある、文字の場所が?になっている、戻す途中で新しい�が出るなら、バージョン管理の履歴や元の納品データを探してください。手順は「文字化けの解読と復元手順」で扱っています。
// パターン 縺ゅ↑縺� ペア: UTF-8 → Shift_JIS
const bytes1 = encodeWith(garbled, "Shift_JIS"); // 元のバイト列に戻す
const fixed1 = decodeWith(bytes1, "UTF-8"); // "あなた"
// パターン “ú–{Œê ペア: Shift_JIS → Windows-1252
const bytes2 = encodeWith("“ú–{Œê", "Windows-1252");
const fixed2 = decodeWith(bytes2, "Shift_JIS"); // "日本語"
// パターン Ïðèâåò ペア: Windows-1251 → Windows-1252
const bytes3 = encodeWith("Ïðèâåò", "Windows-1252");
const fixed3 = decodeWith(bytes3, "Windows-1251"); // "Привет"
// 二重に化けた café: Windows-1252 → UTF-8 の手順を2回かける。
// 1回目で "café"、2回目で "café" になる。ゲーム・ローカライズの現場でこの化け方が生まれる理由
日本語Windowsの表計算ソフトから書き出したCSVは、旧コードページのShift_JIS(CP932)で保存されることが多く、下流はUTF-8を前提にしています。この既定値ひとつが、縺の列と翻訳者から戻る“ú–{Œêの大半を説明します。どの名前がどの表を指すのかは「Shift_JISとCP932の違い」で扱っています。
エンコーディングを明示しないツールはOSのコードページに落ちます。欧米ならWindows-1252、日本語ならCP932、中国語ならGBK。同じファイルが誰の環境で開いたかで3通りに化けるため、開発者の手元では正常でも翻訳者やプレイヤーには壊れて見えます。