0

私はベンコーディングと少し混乱しています。

文字列をベンコードするときの仕様によると、次の形式を使用する必要があります。

長さ:文字列

文字列スパム4:spamになります

私の質問: 4は、コード化された文字列のシンボルの数量、または utf-8 バイトの数量ですか?

たとえば、文字列のgâteauをベンコードするとします。

この文字列の長さとして何を指定する必要がありますか?

7を指定する必要があると思います。最終的な形式は7:gâteauにする必要があります

これは、シンボルâが utf-8 エンコーディングに従って 2 バイトを使用し、この文字列の残りのすべてのシンボルが utf-8 エンコーディングに従って 1 バイトを使用したためです。

また、コード化されたデータを Java String インスタンスに格納することは推奨されていないと聞きました。

つまり、データ ブロックをベンコードするときは、バイト配列として格納する必要があり、エンコーディングの問題を回避するために Java String 値に変換しないでください。

私の仮定は正しいですか?

4

1 に答える 1

1

仕様によると、コード化された文字列はバイトのシーケンスであり、このシーケンスのバイト数をその長さとして指定する必要があります。

そして、仕様から: 「すべての文字列値は UTF-8 でエンコードされています」。仕様

また、「gâteau」の場合、文字âは2バイトかかるため、長さとして7を指定する必要があります。

于 2015-07-24T13:34:55.973 に答える