私はUTF-8
エンコーディングを処理するものに取り組んでおり、次の質問をしていることに気付きました:
UTF-8
エンコードされた文字列内で決して発生しないバイトに遭遇した場合、どうすればよい ですか?
すなわち0x1111111X
たとえば、バイト ストリーム内の現在の場所を調べて、ストリーム内のその場所のコード ポイントを表すために使用されているバイト数を示す小さなコード スニペットを書いています。
0x0XXXXXXX
ちょうど10x10XXXXXX
おっと、私たちは継続バイトにいます。上流を検索して先頭のバイトを見つけます0x11XXXXXX
先頭の 1 の数を数えます。それが答えです0x1111111X
エラー、これはできませんUTF-8
!!! 何をすべきか!?!?
エラー値を返すことを考えていますが、副作用として、より予測可能なエラーグリフ (グリフを表すコードポイントを意味します) に置き換える必要があるかどうか疑問に思っています。そして後で、文字列をジャンプして、先頭のバイトにその後の継続バイトの正しい数がないことがわかったなど、もっと複雑なことをすると...私もそれを「修正」する必要があると考えています。
間違ってエンコードされた文字列を壊れたままにしておくこと、またはそれらを変更して間違ったものにすることは標準的な慣行ですか?