ASCII字符读取问题:欧元符号变空

问题描述 投票:1回答:2

我如何阅读€从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片段:

<?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>
java xml xsd xml-parsing ascii
2个回答
4
投票

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

接下来,LATIN-1(ISO / IEC 8859-1)中也没有€。如果您需要8位ISO / IEC 8859字符集中的€,则需要使用ISO-8859-15。代码是0xA4164小数。

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

注意:

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

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


最后,由于您已指定UTF-8作为XML文档的编码,因此您应该能够将文字€字符粘贴到文档中...假设您使用UTF-8识别编辑器对其进行编辑。 (但这也有缺点......)


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


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


1
投票

嘿Shreya!

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

Link to solve all your problems :)

祝你好运!

加斯帕

© www.soinside.com 2019 - 2024. All rights reserved.