1

我有这个 org.jdom.Document 并从中获取一个元素并尝试使用 xpath 输出一个值。问题是 Norwegain 的字母是 ? 而不是æ ø å。

Element nameNode = (Element) XPath.selectSingleNode( element, "contentdata/name" );
System.out.print(nameNode.getText());
// Produces "S?rbyen"

当我使用

XMLOutputter outputter = new XMLOutputter( Format.getPrettyFormat());
outputter.output( nameNode, System.out );
// Produces "<name>Sørbyen</name>"

那么如何使用 XPath.selectSingleNode() 或 nameNode.getText() 并返回正确的 UTF-8?

更新:原来字符串仅在控制台输出中更改,比较 nameNode.getText().equalsIgnoreCase("Sørbyen") 返回 true。

4

3 回答 3

3

问题不在于 xpath,而在于您尝试验证值的方式。默认情况下,控制台未启用 UTF-8。所以当你使用

System.out.print(nameNode.getText());

它会显示一些奇怪的字符。

如果您使用的是 eclipse,那么您可以通过运行配置 > 通用 -> 编码 -> 从下拉列表中选择 UTF-8 来配置控制台编码设置。

在此处输入图像描述

于 2013-08-13T10:46:34.540 回答
0

问题不在于获取显示中的字符。使用以下作为命令行参数来启动应用程序,它应该可以工作

-Dfile.encoding=UTF-8-Dfile.encoding=UTF-8

希望能帮助到你

于 2013-08-13T10:48:52.483 回答
0

XmlOutputter 的父级是什么?如果是 OutputStreamWriter,则将编码设置为“UTF-8”,请参阅http://docs.oracle.com/javase/7/docs/api/java/io/OutputStreamWriter.html#OutputStreamWriter(java.io.OutputStream

像这样:

OutputStreamWriter sw = new OutputStreamWriter(System.out, "UTF-8");
于 2013-08-13T10:49:59.857 回答