中文字符的UTF编码.Java

我通过轴webservice中的对象接收String。 因为我没有得到我期望的字符串,所以我通过将字符串转换为字节进行了检查,并且当我期待E4BDA0 E5A5BD E59097(其实际上是UTF-中的好好吗)时,我得到了三合一中的C3A4C2 BDC2A0 C3A5C2 A5C2BD C3A5C2 90C297。 8。

什么可能导致你好吗成为C3A4C2 BDC2A0 C3A5C2 A5C2BD C3A5C2 90C297? 我做了谷歌搜索,但我得到的只是一个中文网站,描述了python中发生的问题。 任何见解都会很棒,谢谢!

你有所谓的双重编码。

您有正确指出的三个字符序列“你好吗”以UTF-8编码为E4BDA0 E5A5BD E59097。

但现在,开始以UTF-8编码THAT编码的每个字节。 从E4开始。 UTF-8 中的代码点是什么? 尝试一下! 这是C3 A4!

你明白了…… 🙂

这是一个Java应用程序,说明了这一点:

public class DoubleEncoding { public static void main(String[] args) throws Exception { byte[] encoding1 = "你好吗".getBytes("UTF-8"); String string1 = new String(encoding1, "ISO8859-1"); for (byte b : encoding1) { System.out.printf("%2x ", b); } System.out.println(); byte[] encoding2 = string1.getBytes("UTF-8"); for (byte b : encoding2) { System.out.printf("%2x ", b); } System.out.println(); } 

}