【发布时间】:2012-07-21 03:11:45
【问题描述】:
欢迎大家
我正在开发一个 Java 应用程序,它从 Internet 调用一个 PHP,它给了我一个 XML 响应。
响应中包含这个词:“Próximo”,但是当我解析 XML 的节点并将响应获取到字符串变量中时,我收到这样的词:“Próximo”。
我确定问题在于我在 Java 应用程序中使用了不同的编码,然后是 PHP 脚本的编码。然后,我想我必须将编码设置为与您的 PHP xml 中相同的编码,UTF-8
这是我用来从 PHP 获取 XML 文件的代码。
¿我应该在此代码中进行哪些更改以将编码设置为 UTF-8? (请注意,我没有使用缓冲阅读器,我使用的是输入流)
InputStream in = null;
String url = "http://www.myurl.com"
try {
URL formattedUrl = new URL(url);
URLConnection connection = formattedUrl.openConnection();
HttpURLConnection httpConnection = (HttpURLConnection) connection;
httpConnection.setAllowUserInteraction(false);
httpConnection.setInstanceFollowRedirects(true);
httpConnection.setRequestMethod("GET");
httpConnection.connect();
if (httpConnection.getResponseCode() == HttpURLConnection.HTTP_OK)
in = httpConnection.getInputStream();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(in);
doc.getDocumentElement().normalize();
NodeList myNodes = doc.getElementsByTagName("myNode");
【问题讨论】:
-
您确定这是编码问题吗?您是否使用网络浏览器测试过您的 PHP 内容?我认为源 XML 包含转义字符!
-
你在这里问了另一个问题:stackoverflow.com/questions/11494069/…@kgb 的答案是你应该看的。这不是编码问题。似乎 xml 的内容是一些 html 数据,并且该数据被转义了。你需要取消它。以下链接向您展示了 html 如何在外语中转义一些特殊字符 thesauruslex.com/typo/eng/enghtml.htm
标签: java xml utf-8 inputstream