0
 <?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")但没有奏效。

4

1 回答 1

4

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

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

于 2013-03-18T14:14:13.717 回答