私はUTF-8エンコーディングで(継続のための)「継続バイト」が何であるかを調べようとしています。UTF-8継続バイト
ウィキペディアは、いずれかの有用な情報は戻されません全て
Google検索でそれを定義せずにUTF-8 articleでこの用語を紹介します。私は公式仕様に飛びこうとしていますが、最初に高レベルの要約を読むことが望ましいでしょう。
私はUTF-8エンコーディングで(継続のための)「継続バイト」が何であるかを調べようとしています。UTF-8継続バイト
ウィキペディアは、いずれかの有用な情報は戻されません全て
Google検索でそれを定義せずにUTF-8 articleでこの用語を紹介します。私は公式仕様に飛びこうとしていますが、最初に高レベルの要約を読むことが望ましいでしょう。
UTF-8の継続バイトは、上位2ビットが10
である任意のバイトです。
これらは、マルチバイトシーケンスの後続バイトです。次の表は、役立つことがあります。
ここUnicode code points Range Encoding Binary value
------------------- -------- --------------------------
U+000000-U+00007f 0xxxxxxx 0xxxxxxx
U+000080-U+0007ff 110yyyxx 00000yyy xxxxxxxx
10xxxxxx
U+000800-U+00ffff 1110yyyy yyyyyyyy xxxxxxxx
10yyyyxx
10xxxxxx
U+010000-U+10ffff 11110zzz 000zzzzz yyyyyyyy xxxxxxxx
10zzyyyy
10yyyyxx
10xxxxxx
あなたはUnicodeコードポイントはUTF-8マルチバイトバイト配列、及びそれらと同等のバイナリ値にマッピングする方法を見ることができます。
基本的なルールはこれです:それは11
で始まる場合
0
ビットで始まる場合、それは128未満1
ビットの数は合計で何バイトあるかを示します(110xxxxx
は2バイトあり、1110xxxx
には3があり、11110xxx
には4があります)。10
で始まる場合、それは継続バイトです。この区別は、そのコードポイントの最初のバイトを見つけるために、配列にから任意バイトをバックアップすることができるように、非常に便利な処理を可能にします。 ビットで始まらないものが見つかるまで、逆方向に検索してください。
同様に、UTF-8 strlen
には、10xxxxxx
バイトを数えて使用することもできます。
これはちょっとしたストレッチ/オーバーブローイングだと思うけど...とにかく便利な情報が入っている!私が理解できないことは、なぜ「11」が必要なのかということです。 '0'、連続するもの(任意に多数あります)は' 1'で始まります。 –
@ΈρικΚωνσταντόπουλος "先頭のバイトは' 0'_で始まります - これは正しくありません。 「0」で始まるバイトはシングルバイトコードポイントなので、_リーディングバイトでも継続でもありません。それは一人で立つ。これが '11'で始まるバイトと区別されます。これは、_sequence_の最初のバイトであり、単一のコードポイントを表すためにさらに多くのバイトが続くことを示しています。 –
@WilliamPrice Dunnoなぜ私はその話題以外のコメントを投稿しましたが、私自身のエンコーディングを発明しようとしていたと思います。 –
つまり、継続バイトは、最初のバイトまたは1バイトを除くバイトです。 UTF-8では、継続バイトは0x10で開始されます。
引用を追加すると、私はdownvoteを削除します。 –
「継続バイト」は用語ではなく通常の英語の単語であり、用語「バイト」です。疑似用語として使用されると、読者を混乱させる可能性があります。
ユニコード標準では、この表現を1つの場所、Ch. 5の5.22節でのみ使用しています。たとえば、「有効な継続バイトにできないバイトが続く4バイトUTF-8シーケンスの最初の3バイト: "この文脈では、意味は明らかです。それは何かを続けるバイト、すなわち一連のバイトです。
ウィキペディアのページでは、文字のエンコードされた形式の最初のバイトを除いて、UTF-8エンコーディングの任意のバイトを意味するように「継続バイト」が使用されているようです。
誰かがウィキペディアの記事を編集したようです。 (: – tripleee