项目中java 给C端返回报文,报文不同结果为固定的长度,我调用(String)Value.getBytes().length,再根据这个判断补多少位。但后来C这边收的报文长度非定长,而一直变化。查找原因,原来我开发时在windows环境下,调用getBytes().length对中文返回的字节数是对的,但在unix环境下,字符集非GBK的,对中文调用getBytes().length一个中文字节数却只有1。getBytes()如果不制定参数就是取当前系统默认的字符集。
改正方法:定义用哪种字符集。把(String)Value.getBytes().length改成(String)Value.getBytes("gbk").length。