【问题标题】:Xml parsing not working with Swedish ChrsXml 解析不适​​用于瑞典语 Chrs
【发布时间】:2012-01-24 12:44:15
【问题描述】:

我正在尝试将以下 xml 解析为 punycode,但它不起作用(我尝试过以不同方式设置编码)。

<?xml version="1.0" encoding="ISO-8859-1" ?>
<domain index="1" domainname="teståbel.nu">

<?xml version="1.0" encoding="UTF-8" ?>
<domain index="1" domainname="teståbel.nu">


public void setDomainName(String domainName) {
        this.domainName = java.net.IDN.toUnicode(domainName);

当我运行 setDomain() 时,一切都设置正确。

我已经在我的机器上运行了这个,Windows 7 本地设置为瑞典语,但它失败了。然后我在另一台使用 Windows XP 的机器上对其进行了测试,本地设置为英语(美国)设置为并且它可以工作。

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

【问题讨论】:

  • 您的 XML 文件真的 ISO-8859-1 编码了吗?在二进制编辑器中查看它并使用文件中的字节更新您的问题。
  • 当你用十六进制编辑器打开XML文件时,你在å看到的字节序列是什么?
  • 您可能正在查看Windows-1252,它与ISO-8859-1 相似——而且无论如何都是首选——但它并不完全相同。

标签: java xml parsing locale


【解决方案1】:

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

JAVA_TOOL_OPTIONS : -Dfile.encoding=UTF8

【讨论】:

  • 通常(也就是说,如果您使用适当的 DOM API 构建和使用 XML),您不必担心这些事情。您必须将文件编码设置为 Java 选项这一事实意味着您做错了。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 1970-01-01
    • 2016-05-08
    • 2014-11-18
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多