在写这边文章之前,一直以为所有的汉字不管编码是什么,都是占用两个字节。并且在工作中使用到判断字节数或者接口报文长度时也没有出错,所以这个知识点一直就被默认为正确的。
直到今天,在工作中遇到一个问题,才发现原来不同的编码,汉字占用的字节数是不一样的。比如:UTF-8编码下汉字占用的字节数是3;GBK编码一个汉字占用的字节数是2。
发现过程:在进行接口测试的时候,有一个测试点为定长报文头中有一个字段为报文xml的长度,并且这个字段的值会根据后面报文每个字段的取值变化。但是测试时发现无论使用什么工具去看xml报文的长度,都是和定长报文中xml长度字段的值不相等。直到问了开发才发现是编码导致的问题。因为该项目的其他接口解析的时候都使用的是GBK编码,为了配合交互系统,该接口解析的时候使用UTF-8编码才不会出现乱码,故导致了这个问题。