java - 从 XML 到 Java 的字符编码

标签 java xml http encoding

 <?xml version="1.0" encoding="UTF-8"?>

我只会放一些我认为有意义的代码摘录。

我正在通过 http 请求从一个 xml 读取一些信息,如下所示:

        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        xml = EntityUtils.toString(httpEntity);

如果我将字符串 xml 打印到屏幕上,我已经可以看到编码存在一些问题

然后返回一个文档,我有这个

        Document doc = null;
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

        DocumentBuilder db = dbf.newDocumentBuilder();

        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(xml));

        doc = db.parse(is); 

虽然我从http请求中正确获取了信息,但在显示数据时,我在字符编码方面遇到了问题。

我已经尝试过 is.setEncoding("UTF-8") 但没有成功。

最佳答案

问题是您将 xml 转换为字符串(字符),不要这样做(您很可能使用了错误的编码并损坏了 xml)。 将 xml 视为二进制数据(字节)

您可以使用EntityUtils.toByteArray(好的),或者您可以将 HttpEntity 流直接传递到 xml 解析器(理想)。

关于java - 从 XML 到 Java 的字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15478844/

相关文章:

java - 如何修复 TextWatcher 的方向变化?

java - 打印二进制排列列表

xml - 如何将 url 传递给 NSBundle 以使用 AEXML 进行 xml 解析?

c# - 如何通过 HTTP 发送进程的标准输出

http - 截击 body 400错误

java - 如何在 ArrayList 中查找任何重复项的最大值

java - 尝试在 eclipse maven 项目中配置 Cucumber 时,运行程序类中出现错误

php - 什么是通过 rss 提要将 html 嵌入代码传递给 php 中的 rss 解析器的最佳方法?

java - 运行 run 目标时出现 Ant 构建错误

java - 基于 servlet 的堆栈是否有显着的开销?