2017-12-10 19 views
0

나는 네트워킹이 이것을 어떻게하는지 혼란 스럽다. C#에서 문자열이 있고 utf-8로 serialize합니다. 그러나 utf-8에 따르면 각 문자는 "가능하게"1에서 4 바이트를 차지합니다.각 문자가 시작/끝나는 시점을 utf8에 맞춰 바이트 배열을 deserialising하는 방법은 무엇입니까?

그래서 내 서버가 네트워크를 통해이 바이트 배열을 수신하고 서버가 일부 크기의 utf8 문자열을 알고 있으면 역 직렬화됩니다. 각 문자가 제대로 변환 될 바이트 수를 어떻게 알 수 있습니까?

내가 프로토콜의 예에서 각 문자열의 총 바이트 포함해야합니까 :

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

을 또는이 불필요?

답변

3

UTF-8은 문자를 구성하는 비트에 필요한 바이트 수를 인코딩합니다. Wikipedia에 대한 설명 읽기 싱글 바이트 코드 포인트는 0 비트로 시작합니다. 2 바이트 코드 포인트 만 비트 110에서 시작하며 멀티 바이트 코드 포인트 내부의 바이트는 10으로 시작합니다.

+0

오! 와우는 그것을 몰랐다. 고맙습니다. 내가 아무 이유없이 내 메시지를 부풀린 것 같아요! – WDUK

+0

아직 10 분을 기다릴 수 없습니다. 그러나 나는 그것이 한때 나를 그렇게 할 것이다 :) – WDUK