java - 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.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>
解决方案
首先,€ 不是一个有效的 ASCII 字符。真正的 ASCII 是一个 7 位字符集,比 € 符号的发明早了 30 多年。
其次,在 LATIN-1 (ISO/IEC 8859-1) 中也没有 €。如果您需要 8 位 ISO/IEC 8859 字符集中的 €,则需要使用 ISO-8859-15。代码是0xA4
或164
十进制。
在 Unicode 中,€ 的代码点是U+20AC
. 可以使用十六进制字符实体语法在 XML 中编写;€
.
笔记:
- 十六进制数字不区分大小写。
- 您还可以使用十进制字符实体语法;
€
,但我更喜欢十六进制形式,因为它更符合 Unicode 代码图表。
或者,您可以使用 XML / HTML 命名字符实体€
...假设您的 XML 解析器理解它。
最后,由于您已将 UTF-8 指定为 XML 文档的编码,您应该能够将文字 € 字符粘贴到文档中……假设您正在使用支持 UTF-8 的编辑器对其进行编辑。(但这也有缺点......)
(可以在 XML 中使用的字符有限制id
,但允许使用 € 字符。)
作为记录,€
您尝试在文档中使用的字符实体实际上是指非打印 C1 控制字符。
推荐阅读
- amazon-web-services - 如何在 Kubernetes/Openshift 中手动停止/崩溃/失败 pod
- cassandra - DataStax DevCenter 架构窗口为空
- r - 分割图像数据集:训练、验证和测试
- apache-spark - Spark DStream中基于消息时间戳构造窗口
- javascript - 如何制作一个从 .json 文件加载其元素的嵌入反应菜单?
- d3.js - 获取元素的宽度
- mysql - java.lang.NoClassDefFoundError: org/hibernate/metamodel/source/annotations/JPADotNames 错误
- javascript - 如何在 JS 代码中将文本更改为 png 文件以隐藏垃圾邮件机器人的电子邮件
- html - 如何使用 css 的特异性?
- lua - 当 boolvalue = true 时,Roblox Lua 无法识别