Java ASCII字符读取问题:欧元符号变空
如何将;从xml文件读取到java 给我一个错误。我想要印刷Java ASCII字符读取问题:欧元符号变空,java,xml,xsd,xml-parsing,ascii,Java,Xml,Xsd,Xml Parsing,Ascii,如何将;从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.intern
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="€;">
<firstname>low</firstname>
<lastname>yin fong</lastname>
<nickname>fong fong</nickname>
<salary>200000</salary>
</staff>
</company>
勇
木金
mkyong
100000
低的
尹芳
芳芳
200000
你好,史莱雅
我认为您的xml版本可能使用了错误的十六进制字符。
试试€代码>或和#8364代码>。
下面的链接有一个巨大的文本墙,基本上描述了你的确切问题
:)
祝你好运
Jesper首先,€不是有效的ASCII字符。真正的ASCII是一个7位字符集,比欧元符号的发明早30多年
其次,拉丁语1(ISO/IEC 8859-1)中也没有欧元。如果在8位ISO/IEC 8859字符集中需要欧元,则需要使用ISO-8859-15。代码为0xA4
或164
十进制
在Unicode中,欧元的代码点是U+20AC
。可以使用十六进制字符实体语法用XML编写<代码>€代码>
注:
- 十六进制数字不区分大小写李>
- 您还可以使用十进制字符实体语法<代码>€代码>,但我更喜欢十六进制格式,因为它更符合Unicode代码图表
或者,您可以使用XML/HTML命名的字符实体&euro代码>。。。假设您的XML解析器理解它
最后,因为您已经指定UTF-8作为XML文档的编码,所以您应该能够将一个文本字符粘贴到文档中。。。假设您正在使用支持UTF-8的编辑器进行编辑。(但这也有缺点……)
(XMLid
中可以使用的字符有限制,但允许使用欧元字符。)
对于记录,使用和#128您试图在文档中使用的代码>字符实体实际上是指一个非打印C1控制字符。您应该使用unicode“\\u20AC”输入一些代码来解析树?&x20AC代码>(基数16)或€代码>(基数10)。是。我建议使用十六进制形式,因为这是Unicode标准的首选符号。