(GBK 编码) 一个字节数组 ,结尾是完整的,但是开头有可能出现半个字符,就是乱码,怎样判断字符数组的开头是否是个不完整的字符,

解决方案 »

  1.   

    晕,已经是BYTE数组了,现在就是怎么判断的问题
      

  2.   

    没有绝对有效的办法,只能用这个规则来大致判断:
    “GBK采用双字节表示,总体编码范围为8140-FEFE,首字节在81-FE 之间,尾字节在40-FE 之间”所以,如果你发现第一个字节如果小于 0x81,说明其应该是尾字节。那么以此推论的话,假设你发现 0、2、4、6、8 下标的byte,小于0x81,说明很可能错位了半个字符。更准确的直接判定方式就没有了。
      

  3.   

    关键是 第二字节会和asc吗有重复范围,这样岂不是无法判断了
      

  4.   

    如果我第一个字节就在这个重复范围内,那我不是无法判断是asc,还是半个字符吗,GBK这么坑爹吗
      

  5.   

    比如你已经转吧字符换成0x81了,按自己设定好的密匙,在后面加上xxx,传送后,再按规律截取0x81,再转换为字符就可以了
      

  6.   

    实际上它就是这么坑爹。从你的想法来说,用UTF-8会比较好些;它可以识别出该byte是否是完整的。
    另外,如果你非常需要可靠传输,可以考虑在传输之前每个有效字符直接插入分割符,比如:0x0