Java,未知字符 ン □ Xml 响应

标签 java html xml encoding utf-8

我目前正在尝试从 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/

相关文章:

java - 数据库访问类最佳实践

java - Eclipse 插件代码找不到 "javax.inject.Inject"类,插件 jar 现在不在插件目录中

javascript - 如何为动态表添加表头

javascript - 如何在点击 meteor 时更改图标

java - 使用 jaxb 在 java 中持久保存独立程序的数据

xml - XSLT 意外的重复文本

android - XML 中的 TextInputEditText requestFocus 导致呈现问题

java - Lambda Java 8 - 如何在将字符串列表流式传输到日期列表时进行转换

javascript - 通过 PHP 将 mysql 表值传递给 Javascript

Java Play 框架 Javascript 中的 Groovy 脚本