2

C でナビゲートする必要がある UTF-8 のテキスト ファイルがあります。このファイルを別々の小さなファイルに分割する (つまり、半分に切る) 必要があります。これが発生すると、マルチバイト文字が 2 つの異なるファイルに分割されることがあります。頭の悪いテキスト エディタが後半のテキストを含むファイルを読み込もうとすると、切り取られた文字の後半を読み込んで混乱し、残りのテキストが正しく表示されません。バイトごとに読み取る場合、文字の先頭にいるのか途中にいるのかはどうすればわかりますか? 非 ascii 互換の UTF-8 文字はすべて先頭ビットが 1 に設定されて始まりますが、一部は 2 バイトで、一部は 3 バイトです。

編集:気にしないでください。最初のバイトには、文字が長い先頭の 1 の数が含まれていることがわかりました。つまり、3 バイト文字は 1110xxxx xxxxxxxx xxxxxxxx です。

4

3 に答える 3

1

すべての UTF-8 文字は、先行バイトと 0 個以上の継続バイトで構成されます。すべての継続バイトは、バイナリで「10xxxxxx」の形式です。したがって、すべての先行バイトは、「0xxxxxxx」または「11xxxxxx」の 2 つの形式のいずれかになります。

于 2013-06-17T16:28:58.853 に答える