Java Xml解析不适用于瑞典CHR

Java Xml解析不适用于瑞典CHR,java,xml,parsing,locale,Java,Xml,Parsing,Locale,我试图将下面的xml解析为punycode,但它不起作用(我尝试了不同的编码设置) public void setDomainName(字符串domainName){ this.domainName=java.net.IDN.toUnicode(域名); 当我运行setDomain()时,一切都设置正确 我在我的机器上运行了这个程序,Windows 7的本地设置为瑞典语,但失败了。然后我在另一台机器上测试了它,Windows XP的本地设置为英语(美国),设置为 因此,我的结论是编码工作正常

我试图将下面的xml解析为punycode,但它不起作用(我尝试了不同的编码设置)


public void setDomainName(字符串domainName){
this.domainName=java.net.IDN.toUnicode(域名);
当我运行setDomain()时,一切都设置正确

我在我的机器上运行了这个程序,Windows 7的本地设置为瑞典语,但失败了。然后我在另一台机器上测试了它,Windows XP的本地设置为英语(美国),设置为


因此,我的结论是编码工作正常,但我的环境是错误的,有人知道如何解决这个问题吗?我可以用一些参数或其他东西运行我的JVM吗?

好的,所以我找到了答案,我需要用以下选项运行我的JVM:

JAVA_TOOL_OPTIONS : -Dfile.encoding=UTF8

结果取决于计算机的区域设置,这表明您正在使用jvm的默认字符集读取xml文件。正确的方法是让xml解析器找出编码。这通常意味着在解析文档时使用
InputStream
而不是
读取器


您没有显示实际解析文件的部分,但我猜您正在创建一个
FileReader
InputStreamReader
,而不指定字符集,只需使用
FileInputStream

您的XML文件真的是ISO-8859-1编码的吗?在二进制编辑器中查看它,并用哪个字节更新您的问题文件中有。当您使用十六进制编辑器打开XML文件时,您在
å
上看到的字节序列是什么?很可能您看到的是
Windows-1252
,它与
ISO-8859-1
,非常相似,但并不完全相同。通常(也就是说,如果您使用适当的DOM API构建和使用XML),您就不必担心这些问题。您必须将文件编码设置为Java选项,这意味着您做得不对。
JAVA_TOOL_OPTIONS : -Dfile.encoding=UTF8