Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.jdom.xpath.xpath未返回UTF-8_Java_Xpath_Utf 8_Jdom - Fatal编程技术网

Java org.jdom.xpath.xpath未返回UTF-8

Java org.jdom.xpath.xpath未返回UTF-8,java,xpath,utf-8,jdom,Java,Xpath,Utf 8,Jdom,我有这个org.jdom.Document,我从中得到一个元素,并尝试用xpath输出一个值。问题是挪威人的字母是什么?而不是æå Element nameNode = (Element) XPath.selectSingleNode( element, "contentdata/name" ); System.out.print(nameNode.getText()); // Produces "S?rbyen" 当我使用 XMLOutputter outputter = new XMLOu

我有这个org.jdom.Document,我从中得到一个元素,并尝试用xpath输出一个值。问题是挪威人的字母是什么?而不是æå

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>"
XMLOutputter outputter=新的XMLOutputter(Format.getPrettyFormat());
outputer.output(nameNode,System.out);
//制作“Sørbyen”
那么如何使用XPath.selectSingleNode()或nameNode.getText()并返回正确的UTF-8呢


更新:结果表明,字符串仅在控制台输出中更改,比较nameNode.getText().equalsIgnoreCase(“Sørbyen”)返回true。

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

System.out.print(nameNode.getText());
它将显示一些奇怪的字符

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


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

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

希望对您有所帮助

什么是XMLOutputer的父级? 如果是OutputStreamWriter,则将编码设置为“UTF-8”,请参阅

像这样:

OutputStreamWriter sw = new OutputStreamWriter(System.out, "UTF-8");

我正在使用IntelliJ,但我相信这里也有类似的设置。谢谢。@Rubicksman如果你觉得我的答案有用,请接受。接受答案有助于其他面临相同问题的人。我尝试将其添加到命令行java-jar target/DoctorImport-1.0-SNAPSHOT.jar-Dfile.encoding=UTF-8-Dfile.encoding=UTF-8,但没有改变结果。我确认该字符串仅在控制台输出和比较nameNode.getText()中更改.equalsIgnoreCase(“Sørbyen”)返回true。我想我可以接受。谢谢:)这值得一试,但遗憾的是,它没有改变任何事情。