我目前正在尝试从 Xml 文件(可通过此地址访问:http://mobilite.euroairport.com/services/getDepartureAirports?language=French)中提取机场列表。 我的问题是,应该出现在“DÜSSELDORF”中的“Ü”是无法读取的(即使是Ie或firefox直接读取)。 我得到这样的东西: D□SSELDORF 或 D SSELDORF 或 D?SSELDORF
以下是我用来尝试查找该文件的编码的代码(n 是包含“DÜSSELDORF”的字符串):
byte[] bytes = n.getBytes();
Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
bytes = n.getBytes("ASCII");
Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
bytes = n.getBytes("Cp1252");
Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
bytes = n.getBytes("UTF-8");
Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
bytes = n.getBytes("ISO8859_1");
Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
bytes = n.getBytes("ISO8859_2");
这是结果(在 Android 版 Logcat 中):
10-08 09:41:30.557: W/tagtag(1506): D □ ン
10-08 09:41:30.557: W/tagtag(1506): D ? S
10-08 09:41:30.567: W/tagtag(1506): D ン S
10-08 09:41:30.567: W/tagtag(1506): D □ ン
10-08 09:41:30.577: W/tagtag(1506): D ン S
10-08 09:41:30.637: W/tagtag(1506): D ン S
我的问题是:我在尝试读取该字符串时是否犯了错误,或者这是服务器的问题?
最佳答案
Definitley 服务器/(数据服务)(配置错误问题)/bug。
服务器在 HTML/XML 响应中返回此行:
Content-Type: application/xml;charset=UTF-8\r\n
我刚刚检查了xml的字节转储,这就是wireshark表示“DSSELDORF”的方式:
D..SSELDORF
在十六进制转储中(参见 UTF-8 code table 了解十六进制值 c2 9d):
44 c2 9d 53 53
这将是:
44 - D
53 - S
和 C2 9D
被解释为控制字符,也称为不可打印字符 - 因此“丢失”U - 这也解释了您的 logcat 输出。
关于Java,未知字符 ン □ Xml 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784307/