3

以下是错误:http: //java.net/jira/browse/JAXB-614

以上所说的bug,建议我们使用以下链接中提到的解决方案:http: //blog.lesc.se/2009/03/escape-illegal-characters-with-jaxb-xml.html

解析列表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 中的实际字符吗?

4

5 回答 5

1

这些字符都不可打印。

将该字符串粘贴到 Javascript 控制台中会给出"�".

于 2012-05-13T12:14:00.787 回答
1

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

于 2012-05-13T12:16:31.907 回答
1

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

如果上面的链接停止工作,这里是代码:

return IntStream.rangeClosed(0, 65536).filter(XMLChar::isInvalid).mapToObj(c -> new Character((char) c))
            .collect(Collectors.toList());
于 2016-11-04T04:56:40.673 回答
0

ASCII?不,ASCII 最高可达 255。0x1F 及以下的实体都是控制字符。

http://www.utf8-chartable.de/

于 2012-05-13T12:15:57.973 回答
0

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

http://www.ssec.wisc.edu/~tomw/java/unicode.html

Unicode 旨在涵盖所有字符集。最初的“ASCII”只适用于北美。Java 本身已构建了 unicode 支持,但仍有许多字符编码“陷阱”有待发现 :-)

于 2012-05-13T12:21:02.260 回答