记一次UTF8中文编码的乱码

时间:2014-05-08 23:23:09   收藏:0   阅读:307

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传输即可。

记一次UTF8中文编码的乱码,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!