Java org.jdom.xpath.xpath未返回UTF-8
我有这个org.jdom.Document,我从中得到一个元素,并尝试用xpath输出一个值。问题是挪威人的字母是什么?而不是æå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
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。我想我可以接受。谢谢:)这值得一试,但遗憾的是,它没有改变任何事情。