このページでは、当サイトの「文字化けテスター」で、 復元率を高めるコツについて説明します。
クエスチョンマーク「?」に置き換えられている文字化けの部分は、「情報が失われている文字化け」であり、その部分は復元できません。 これはサイトの問題ではなく、文字コードの仕様上どうしようもないことです。
文字化け後の文字列にクエスチョンマーク「?」が出てしまっている場合には、漢字・ひらがな・カタカナで相互に置き換えたり、言い回しを変えるなどしてみてください。
文全体が「単独で安全な文字」だけで構成されていれば、必ず完全に復元できます。「単独で安全な文字」は、ひらがな・カタカナだと「ち-み, ァ-タ, メ-ヺ」の範囲です。
「単独で安全な文字」は、UTF-8のコード値3バイトのうち、最初の2バイトがShift_JISの2バイトの文字に、最後の1バイトがShift_JISの1バイトの文字に変換されているケースです。 この文字だけで構成されていれば、UTF-8の1文字が必ずShift_JISの2文字になるため、一度文字化けしても必ず復元できるのです。
よって、「単独で安全な文字」の使用割合を高めれば、復元率が高まります。
UTF-8 | エ | ヴ | ァ | ン | ゲ | リ | オ | ン | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
値 | E3 | 82 | A8 | E3 | 83 | B4 | E3 | 82 | A1 | E3 | 83 | B3 | E3 | 82 | B2 | E3 | 83 | AA | E3 | 82 | AA | E3 | 83 | B3 |
Shift_JIS | 繧 | ィ | 繝 | エ | 繧 | 。 | 繝 | ウ | 繧 | イ | 繝 | ェ | 繧 | ェ | 繝 | ウ |
ただし「単独で安全な文字」の直前の文字が「単独で安全な文字」ではない場合には、戻せない文字化けになることも稀にあります。 あくまでもレアケースなので、例外もあるということだけ理解しておけばいいと思います。
UTF-8 | ツ | エ | ||||
---|---|---|---|---|---|---|
値 | E3 | 83 | 84 | E3 | 82 | A8 |
Shift_JIS | 繝 | ? | お |
それでは、単独で安全な文字はどのように見つければいいのでしょうか? 一応、ひらがなとカタカナの範囲だけ列挙しましたがそれだけでは不十分でしょう。 文字化けテスターを使えば判別できます。文字化けテスターで1文字入力して文字化けさせた際に、 文字化け後文字列が、2文字でかつ1文字目が漢字、2文字目が半角カナになる文字が「単独で安全な文字」です。 興味がある方は試してみてください。
「単独で安全な文字」以外は「単独で復元できない文字」です。 例えば「あ」は、UTF-8では「E3 81 82」というバイト列です。最初の2バイトはShift_JISの「縺」に割り当てられます。 しかし3バイト目は「82」で、これはShift_JISの2バイト文字の1バイト目のコードです。 それが最後に来ることによりShift_JISの文字に割り当てることができず余るので このコードが単独で最後に残ってしまうと復元することができません。
UTF-8 | あ | ||
---|---|---|---|
値 | E3 | 81 | 82 |
Shift_JIS | 縺 | ? |
ただし、その前もしくは後に別の文字がきて、UTF-8の2文字がShift_JISで3文字に当てはまった場合には復元が可能になります。
UTF-8 | け | あ | ||||
---|---|---|---|---|---|---|
値 | E3 | 81 | 91 | E3 | 81 | 82 |
Shift_JIS | 縺 | 代 | ≠ |
UTF-8 | あ | と | ||||
---|---|---|---|---|---|---|
値 | E3 | 81 | 82 | E3 | 81 | A8 |
Shift_JIS | 縺 | ゅ | → |
行末に句点「。」を使った場合には絶対に復元できません。 句点「。」はUTF-8では「E3 80 82」というバイト列です。 句点「。」は前述の「単独で復元できない文字」の一つなのですが、その中でもさらに復元しにくい厄介な特徴があります。
行末に句点「。」を使った場合に復元可能な文字列になるためには、 以下のどちらかである必要があります。
UTF-8 | 。 | ||
---|---|---|---|
値 | E3 | 80 | 82 |
Shift_JIS (1) | ? | ?? | |
Shift_JIS (2) | 縲 | ? |
しかし、以下の理由により、どちらのケースも存在しません。
そのため、行末に句点「。」を使った場合には絶対に復元できないのです。 これは読点「、」も同じです。
UTF-8 | 、 | ||
---|---|---|---|
値 | E3 | 80 | 81 |
Shift_JIS (1) | ? | ?? | |
Shift_JIS (2) | 縲 | ? |
ただし、行末ではなくその後にさらに文が続く場合には化けない場合もあります。 例えば「。あ」はUTF-8では「E3 80 82」「E3 81 82」というバイト列になりますが、 Shift_JISでは「E3 80」「82 E3」「81 82」と分割され、「82 E3」が「ゅ」に割り当てられ 全体で「縲ゅ≠」となり、復元可能になります。
UTF-8 | 。 | あ | ||||
---|---|---|---|---|---|---|
値 | E3 | 80 | 82 | E3 | 81 | 82 |
Shift_JIS | 縲 | ゅ | ≠ |
UTF-8 | 。 | 今 | ||||
---|---|---|---|---|---|---|
値 | E3 | 80 | 82 | E4 | BB | 8A |
Shift_JIS | 縲 | ゆ | サ | ? |
2019/06/02に、東大クイズ王の伊沢さんらが運営するQuizKnockのYouTube動画 「【わりと読めた】東大生なら文字化けも読めるようになるのか?【検証】」 で、文字化けがクイズとして取り上げられました。 QuizKnockの動画では、「ま」は「縺セ」になると説明されていました。
UTF-8 | ま | ||
---|---|---|---|
値 | E3 | 81 | BE |
Shift_JIS | 縺 | セ |
UTF-8 | し | ま | ||||
---|---|---|---|---|---|---|
値 | E3 | 81 | 97 | E3 | 81 | BE |
Shift_JIS | 縺 | 励 | ∪ |
「りま」は「繧翫∪」になります。
UTF-8 | り | ま | ||||
---|---|---|---|---|---|---|
値 | E3 | 82 | 8A | E3 | 81 | BE |
Shift_JIS | 繧 | 翫 | ∪ |
「ひま」は「縺イ縺セ」になります。
UTF-8 | ひ | ま | ||||
---|---|---|---|---|---|---|
値 | E3 | 81 | B2 | E3 | 81 | BE |
Shift_JIS | 縺 | イ | 縺 | セ |
このページに関するちょっとした感想または、要望、バグ・間違いの指摘などは、下記の送信欄からお送りください。 質問・その他お問合せなど、返信をご希望の方は「こちらのページ」からメッセージをお送りください。
「このページはお役に立ちましたか?」のアンケートと自由メッセージのどちらか一方でかまいません (両方だとよりうれしいです)。お気軽にご利用ください (感想・どんな用途で使用したかなどをいただけると作成・運営の励みになります!)。