UTF-8转码GBK

   昨天一个大学的同学问了一个关于utf-8转码gbk的问题,所以两个人一起讨论了一下关于utf-8转码成为GBK的乱码原因。

  正常情况下如果我们需要将UTF-8格式转码为GBK,我们会需要经过这样一个中转:

  通常情况下如果直接转码会出现一种情况就是GBK转码UFT-8出现乱码后乱码可以在转码回去变为原来的GBK中文。

但是UTF-8转码为GBK则会出现两种情况,在中文字符长度为偶数时是可以直接将乱码还原回去的,但是奇数情况下是无法全部转码回去的

究竟什么原因呢?

    这和UTF-8的编码字节数和GBK的编码字节数有关,我们知道UTF-8的字符集是以三个字节数来存储的,而GBK则是两个字节数,所以就存在以下问题


当“你好好”三个字转码为字符集表示的时候,一共得到九个字节,当然这九个字节转码为gbk的时候会被两两分组,所以第九个字节就会被抛弃无法识别转化为有标记的乱码符号,当我们再把乱码转回去的时候,自然就无法还原为原来的UTF-8了。如下图

所以在UTF-8转gbk的基数情况下就会出现最后一个字转码为乱码后无法还原的情况。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章