1.问题描述
业务需求 1.将某个包含中文的string转换成utf-8对应的byte[]。count作为参数一起传输
2.经网络传递
3.接收传来的byte[]与其他信息
4.解码byte[]
在用utf-8解码byte[]成string时出现了尾部缺失与乱码
2.原因分析
在使用英文与数字的时候,string类型length往往与编码之后的byte[]的length一致。
但utf-8是不定长的,utf-8存储中文时占2~4个字节。
utf-8是根据左侧位1的个数来决定占用了几个字节来决定其编码长度的:
utf-8可以根据字的第一个字节移位推出长度的
0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
由于本人在解码时直接使用string类型length作为解码时候的count,所以造成了解码时候的不完整与乱码
3.解决办法
将byte[]的length作为count传输即可。
原文地址:http://www.cnblogs.com/ACE8793/p/3716627.html