私は最近、いくつかの破損した UTF-8 文字列が ISO-Latin-1 であると思われるものに変換されていることに遭遇しました。実際に破棄され、実際に失われるビットはありません。
基本的に、このようなものは一連の文字を取り、それらの同じビットが utf-8 または他のエンコーディングとして表示された場合の文字列を表示します。そのようなツールは存在しますか?(自分で何かを作成するのは簡単で、手動で行うのも簡単だとわかっているので、本当に何もない場合はおそらくそうします。)
明確にするために:私が抱えている特定のケースは、特定のフォーラムでテキストエディターがutf-8文字を許可するということですが、フォーラム自体はutf-8文字の個々のバイトに対応する文字を表示します.
文字 U+0000 から U+007F の場合、まったく同じ文字ですが、次のようになります。
- U+0080 から U+07FF までの文字は、U+00C0 から U+00DF までの 1 文字と、その後に U+0080 から U+00BF までの 1 文字として表示されます。
- U+0800 から U+FFFF の文字は、代わりに U+00E0 から U+00EF の間の 1 文字として表示され、その後に U+0080 から U+00BF の間の 2 文字が続きます。
等々...
したがって、"â�¦" は実際には文字 U+2xy6 として表示されるはずです (x は "�" の中間の 4 ビット、y は "�" の最後の 2 ビットに "10" を加えたものです)。
U+0080 から U+00BF までの文字のうち、どの文字が「�」であるかはまだ正確にはわかりませんが。
私がやろうとしているのは、UTF-8 文字列の文字の ISO-Latin-1 ビット値をすべて取得し、それらをすべて連結して、結果のビット シーケンスを UTF-8 エンコード文字が含まれているかのように解釈することです。