需求:java工程需要发送一个socket消息到C++接口,C++接口中规定了若干个参数,并且每个参数的长度是固定的,起始位置也是固定的, C++那边是GB2312编码,java这边是UTF-8. 现象:一开始用StringBuffer拼接字符串,最后转成byte[]发送,发现英文的字符是没有问题的,中文的就会存在长度变动或参数起始位置偏移现象. 解决:直接生成符合总长度要求的byte数组---A,对每个参数值进行转码后得到byte数组---B,把B赋予A. 代码如下: 1: 2: import