XML,为什么即使在CDATA部分也不允许使用null char?
似乎在那里终止文件。
任何解决方案? BASE64?
答案 0 :(得分:4)
因为它不是valid XML character,即它应该产生一个解析错误。这可能是由于历史原因(空终止字符串)以及XML的纯文本性质:不鼓励任何具有Unicode功能的编辑器可能会阻塞...
答案 1 :(得分:2)
您可以在上一个问题中找到答案:
答案 2 :(得分:1)
它不应该'终止文件',但它应该生成格式良好的错误。这是不允许的,因为世界上很多人仍在使用以空值终止的字符串处理,所以允许\ 0可能会在处理链的某个未指定点上造成麻烦。
这甚至可能是一个安全漏洞;过去有许多漏洞依赖于允许\ 0和将其作为终结符的系统的接口。因此,最安全的做法就是不允许它。
其他控制字符可以转义为&#...; XML 1.1中的其他字符引用,但CDATA部分中没有。在XML 1.0中,根本无法获得控制字符。毕竟,它应该是一种基于文本的,人类可读的格式。
的Base64?
是。但是如果你正在处理大部分二进制文件,那么用XML封装它可能不是一个合理的选择。