XML字符编码咨询:该字符编码类型及SAX解析失败处理方案
XML特殊字符编码与SAX解析问题解答
1. 代码中的字符编码说明
你给出的XML代码里,是XML十进制字符实体引用,对应Unicode码点U+000B(垂直制表符,ASCII控制字符);后面的#36是未转义的普通文本字符。
2. XML中的正确处理方式
情况一:误写了实体引用
如果原本要表示的是普通文本#11#36,直接把改成#11即可——#在XML属性值中不属于需要转义的特殊字符,无需额外处理。修改后的代码如下:
<tac id="10" name="KD#11#36">
情况二:确实需要保留垂直制表符
XML 1.0规范(第三版)禁止使用U+000B这类控制字符,若必须保留该字符,需切换到XML 1.1规范:
- 在XML文档开头声明版本为1.1:
<?xml version="1.1" encoding="UTF-8"?> - 确保你的SAX解析器支持XML 1.1(主流Java解析器如Xerces默认支持,但需确认配置)
3. 关于编码的疑问
不需要将XML头的编码从UTF-8改为其他编码。UTF-8可以完整表示所有Unicode字符,解析失败的核心原因是U+000B不符合XML 1.0的字符规范,而非编码问题。
内容的提问来源于stack exchange,提问作者Invariant
相关产品推荐
相关产品推荐

