首页 > 代码库 > 记一次UTF8中文编码的乱码
记一次UTF8中文编码的乱码
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传输即可。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。