Java 谁能给我一个无效XML字符的列表

Java 谁能给我一个无效XML字符的列表,java,xml,jaxb,xml-serialization,xml-parsing,Java,Xml,Jaxb,Xml Serialization,Xml Parsing,以下是错误: 上述错误,建议我们使用以下链接中提到的解决方案: 决议列出了31个代码: final String escapeString = "\u0000\u0001\u0002\u0003\u0004\u0005" + "\u0006\u0007\u0008\u000B\u000C\u000E\u000F\u0010\u0011\u0012" + "\u0013\u0014\u0015\u0016\u0017\u0

以下是错误:

上述错误,建议我们使用以下链接中提到的解决方案:

决议列出了31个代码:

final String escapeString = "\u0000\u0001\u0002\u0003\u0004\u0005" +                
    "\u0006\u0007\u0008\u000B\u000C\u000E\u000F\u0010\u0011\u0012" +            
    "\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C" +               
    "\u001D\u001E\u001F\uFFFE\uFFFF";

现在,我的问题是,我可以获得上述代码的实际ASCII字符吗?

这些字符都不能打印


在Javascript控制台中粘贴该字符串会产生
“�"

ASCII?否,ASCII将增加到255。实体0x1F和以下都是控制字符

  • 如果您想了解这些字符所代表的Unicode/UTF-8字符的详细信息,请参阅任何Unicode图表,如:


如果您想在XML中存储二进制数据,可以使用Base64编码。 我不认为用相同的“无效”字符替换它们是最好的方法。

在谷歌搜索“java unicode”。示例结果如下:


Unicode被设计为覆盖所有字符集。最初的“ASCII”只适用于北美。Java本身就有Unicode支持,但仍然有很多字符编码“gotchas”“为了发现:-)

我编写了一个方法,返回一个包含所有无效XML字符的
列表。这有助于我对去除这些字符的正则表达式进行单元测试。你可以查看要点

如果上述链接停止工作,代码如下:

return IntStream.rangeClosed(0, 65536).filter(XMLChar::isInvalid).mapToObj(c -> new Character((char) c))
            .collect(Collectors.toList());

…其中一些甚至不存在于ASCII中(值得注意的是,
\uFFFE
\uFFFF
)+1我怀疑,问题在于恶意XML文件中嵌入的字符与文件顶部声明的编码不匹配。感谢您的回复。实际上,我的目的是向试图在文本框中输入字符的最终用户显示所有无效的xml字符(无效的xml字符列表),然后再将其保存为xml。实际上,ASCII只能升到127。@MichaelKay我是在利用扩展的8位ISO 8859-1的优点,但你是对的,ASCII是7位的。