我通过轴webservice中的对象接收String.因为我没有得到我期望的字符串,所以我通过将字符串转换为字节进行检查,并且我得到了hexa中的C3A4C2 BDC2A0 C3A5C2 A5C2BD C3A5C2 90C297,当我期待E4BDA0 E5A5BD E59097,其实际上是UTF-中的好好吗8.
什么可能导致你好吗成为C3A4C2 BDC2A0 C3A5C2 A5C2BD C3A5C2 90C297?我做了谷歌搜索,但我得到的只是一个中文网站,描述了python中发生的问题.任何见解都会很棒,谢谢!
Ray*_*oal 16
你有所谓的双重编码.
您有正确指出的三个字符序列"你好吗"以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();
}
Run Code Online (Sandbox Code Playgroud)
}
| 归档时间: |
|
| 查看次数: |
17695 次 |
| 最近记录: |