【问题标题】:ASCII character reading issue: Euro symbol coming emptyASCII 字符读取问题:欧元符号为空
【发布时间】:2019-02-25 12:07:02
【问题描述】:

如何将 € 从 xml 文件读取到 java

给我一个错误。我想打印€

org.xml.sax.SAXParseException; systemId: file:/C:/Users/stikkoo/Desktop/product.xml; lineNumber: 9; columnNumber: 18; The character reference must end with the ';' delimiter.
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)

我的 XML sn-p:

<?xml version="1.0" encoding="UTF-8"?>
<company>
    <staff id="1001">
        <firstname>yong</firstname>
        <lastname>mook kim</lastname>
        <nickname>mkyong</nickname>
        <salary>100000</salary>
    </staff>
    <staff id="&#128;">
        <firstname>low</firstname>
        <lastname>yin fong</lastname>
        <nickname>fong fong</nickname>
        <salary>200000</salary>
    </staff>
</company>

【问题讨论】:

  • 你应该使用 unicode "\\u20AC"
  • 放一些你如何解析树的代码?

标签: java xml xsd xml-parsing ascii


【解决方案1】:

首先,€ 不是一个有效的 ASCII 字符。真正的 ASCII 是一个 7 位字符集,比 € 符号的发明早了 30 多年。

接下来,LATIN-1 (ISO/IEC 8859-1) 中也不存在 €。如果您需要 8 位 ISO/IEC 8859 字符集中的 €,则需要使用 ISO-8859-15。代码为0xA4164 十进制。

在 Unicode 中,€ 的代码点是 U+20AC。可以使用十六进制字符实体语法在 XML 中编写; &amp;#x20AC;.

注意:

  • 十六进制数字不区分大小写。
  • 您也可以使用十进制字符实体语法; &amp;#8364;,但我更喜欢十六进制形式,因为它更符合 Unicode 代码图表。

或者,您可以使用 XML / HTML 命名字符实体 &amp;euro; ... 假设您的 XML 解析器理解它。


最后,由于您已将 UTF-8 指定为 XML 文档的编码,您应该能够将文字 € 字符粘贴到文档中...假设您正在编辑它一个 UTF-8 感知编辑器。 (但这也有缺点……)


(您可以在 XML id 中使用的字符有限制,但允许使用 € 字符。)


作为记录,您尝试在文档中使用的 &amp;#128; 字符实体实际上是指非打印 C1 控制字符。

【讨论】:

  • &amp;#x20AC;(基数 16)或 &amp;#8364;(基数 10)。
  • 是的。我推荐使用十六进制格式,因为这是 Unicode 标准的首选表示法。
【解决方案2】:

你好 Shreya

我认为您的 xml 版本可能有错误的十六进制字符。 试试&amp;#x20AC;&amp;#8364;。 以下链接包含大量文字,基本上描述了您的确切问题!

Link to solve all your problems :)

祝你好运!

杰斯帕

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多