这两天搞一个java的socket接口程序,对方提供的demo和自己写的测试类都能正常,在b/s的服务上跑一直不能得到正确结果。

同样的代码,只是调用方式的区别怎么就不行了呢?

经过3天的排查,终于关注到String的getBytes方法,问度娘,有的说默认unicode编码,有的说编译器与操作系统有关。

反正对端说明UTF-8编码,所以采用UTF-8编码的方法

public static byte[] getByteOfString(String data, String charsetName) {
Charset charset = Charset.forName(charsetName);
return data.getBytes(charset);
}

测试,问题解决。

总结:默认的不靠谱,还是指定编码稳当啊