码迷,mamicode.com
首页 > 其他好文 > 详细

记一次UTF8中文编码的乱码

时间:2014-05-08 23:23:09      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:c   string   使用      第一个   问题   

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

记一次UTF8中文编码的乱码

标签:c   string   使用      第一个   问题   

原文地址:http://www.cnblogs.com/ACE8793/p/3716627.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!