<?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/