2017-12-10 15 views
0

これはネットワーキングの仕組みとはちょっと混乱しています。 C#で文字列があり、utf-8にシリアル化しています。しかし、utf-8によれば、各キャラクターは「おそらく」1〜4バイトを占めています。バイト配列をデシリアライズして各文字の開始/終了をutf8に知らせる方法はありますか?

私のサーバがネット上でこのバイト配列を受け取り、それがあるサイズのutf8文字列をデシリアライズすると、各文字が正しく変換されるバイト数をどのように知っていますか?

[message length][char byte length=1][2][char byte length=2][56][123][ ... etc...] 

それとも、これは不要である:

iは、プロトコルなどの各文字列の合計バイト数を含める必要がありますか?

答えて

3

UTF-8は、文字を構成するビットに必要なバイト数をエンコードします。 Wikipediaの説明を読んでください。シングルバイトコードポイントのみがゼロビットで始まります。 2バイトコードポイントのみがビット110で始まり、マルチバイトコードポイント内のバイトは10で始まる。

+0

ああ!うわーはそれを知らなかった。ありがとうございました。私は何の理由もなく私のメッセージを膨らませたと思います! – WDUK

+0

まだ10分待つことはできません。しかし、私はそれが私にできるようになります:) – WDUK

関連する問題