文字化け解説・「文字化けテスター」で復元率を高めるコツ

目次


このページでは、当サイトの「文字化けテスター」で、 復元率を高めるコツについて説明します。

クエスチョンマークに置き換えられている部分

クエスチョンマーク「?」に置き換えられている文字化けの部分は、「情報が失われている文字化け」であり、その部分は復元できません。 これはサイトの問題ではなく、文字コードの仕様上どうしようもないことです。

文字化け後の文字列にクエスチョンマーク「?」が出てしまっている場合には、漢字・ひらがな・カタカナで相互に置き換えたり、言い回しを変えるなどしてみてください。

単独で安全な文字

文全体が「単独で安全な文字」だけで構成されていれば、必ず完全に復元できます。「単独で安全な文字」は、ひらがな・カタカナだと「ち-み, ァ-タ, メ-ヺ」の範囲です。

「単独で安全な文字」は、UTF-8のコード値3バイトのうち、最初の2バイトがShift_JISの2バイトの文字に、最後の1バイトがShift_JISの1バイトの文字に変換されているケースです。 この文字だけで構成されていれば、UTF-8の1文字が必ずShift_JISの2文字になるため、一度文字化けしても必ず復元できるのです。

よって、「単独で安全な文字」の使用割合を高めれば、復元率が高まります。

UTF-8
E382A8 E383B4 E382A1 E383B3 E382B2 E383AA E382AA E383B3
Shift_JIS

ただし「単独で安全な文字」の直前の文字が「単独で安全な文字」ではない場合には、戻せない文字化けになることも稀にあります。 あくまでもレアケースなので、例外もあるということだけ理解しておけばいいと思います。

UTF-8
E38384E382A8
Shift_JIS?

それでは、単独で安全な文字はどのように見つければいいのでしょうか? 一応、ひらがなとカタカナの範囲だけ列挙しましたがそれだけでは不十分でしょう。 文字化けテスターを使えば判別できます。文字化けテスターで1文字入力して文字化けさせた際に、 文字化け後文字列が、2文字でかつ1文字目が漢字、2文字目が半角カナになる文字が「単独で安全な文字」です。 興味がある方は試してみてください。

単独で復元できない文字

「単独で安全な文字」以外は「単独で復元できない文字」です。 例えば「あ」は、UTF-8では「E3 81 82」というバイト列です。最初の2バイトはShift_JISの「縺」に割り当てられます。 しかし3バイト目は「82」で、これはShift_JISの2バイト文字の1バイト目のコードです。 それが最後に来ることによりShift_JISの文字に割り当てることができず余るので このコードが単独で最後に残ってしまうと復元することができません。

UTF-8
E38182
Shift_JIS?

ただし、その前もしくは後に別の文字がきて、UTF-8の2文字がShift_JISで3文字に当てはまった場合には復元が可能になります。

UTF-8
E38191E38182
Shift_JIS
UTF-8
E38182E381A8
Shift_JIS
よって、以下の点に気を付けることによって、復元率が高まります。

句読点「。」「、」

行末の句読点「。」「、」は絶対に復元できない

行末に句点「。」を使った場合には絶対に復元できません。 句点「。」はUTF-8では「E3 80 82」というバイト列です。 句点「。」は前述の「単独で復元できない文字」の一つなのですが、その中でもさらに復元しにくい厄介な特徴があります。

行末に句点「。」を使った場合に復元可能な文字列になるためには、 以下のどちらかである必要があります。

UTF-8
E38082
Shift_JIS (1)???
Shift_JIS (2)?

しかし、以下の理由により、どちらのケースも存在しません。

そのため、行末に句点「。」を使った場合には絶対に復元できないのです。 これは読点「、」も同じです。

UTF-8
E38081
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
E38082E38182
Shift_JIS
一方、「。今」の場合、UTF-8では「E3 80 82」「E4 BB 8A」というバイト列になりますが、 「BB」が「サ」に割り当てられ、最後の「8A」がShift_JISでは割り当てできない値として残るため、復元できません。
UTF-8
E38082E4BB8A
Shift_JIS?

QuizKnockのYouTube動画の補足

2019/06/02に、東大クイズ王の伊沢さんらが運営するQuizKnockのYouTube動画【わりと読めた】東大生なら文字化けも読めるようになるのか?【検証】で、文字化けがクイズとして取り上げられました。 QuizKnockの動画では、「ま」は「縺セ」になると説明されていました。

UTF-8
E381BE
Shift_JIS
確かにそうなる場合もあるのですが、「ま」の前の状態によって変わります。例えば「しま」は「縺励∪」になります。
UTF-8
E38197E381BE
Shift_JIS

「りま」は「繧翫∪」になります。

UTF-8
E3828AE381BE
Shift_JIS

「ひま」は「縺イ縺セ」になります。

UTF-8
E381B2E381BE
Shift_JIS

ちょこっとアンケート&メッセージ

このページに関するちょっとした感想または、要望、バグ・間違いの指摘などは、下記の送信欄からお送りください。 質問・その他お問合せなど、返信をご希望の方は「こちらのページ」からメッセージをお送りください。

「このページはお役に立ちましたか?」のアンケートと自由メッセージのどちらか一方でかまいません (両方だとよりうれしいです)。お気軽にご利用ください (感想・どんな用途で使用したかなどをいただけると作成・運営の励みになります!)


このページはお役に立ちましたか?
自由メッセージ
認証コード 必須
画像のひらがな一文字を入力してください。拗音・促音・濁点・半濁点はありません。