gpt4 book ai didi

xml - 对 xml 不友好的 utf-8 字符是什么?

转载 作者:行者123 更新时间:2023-12-04 00:41:45 25 4
gpt4 key购买 nike

会破坏 xml 的 utf-8 字符是什么。

我在 xml 中传递一个 utf-8 字符串,我不想确保没有字符会破坏 xml。

最佳答案

您从错误的角度看待这个问题。哪个 UTF-8 序列会破坏 XML 不是问题。 UTF-8 只是一种编码方案,XML 规范不处理编码,而是处理 Unicode 代码点。 XML 可以用 UTF-8 编码只是碰巧,但同样这是一种编码方案,而不是一种处理方案。

所以真正的问题是:

Which Unicode codepoints, when decoded from a UTF-8 string, would break XML.

XML spec 中清楚地描述了这个问题的答案本身,它概述了在 XML 的各个部分中允许和限制哪些代码点。例如:

Text characters定义为:

Char    ::=    #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */ 

...

Note:

Document authors are encouraged to avoid "compatibility characters", as defined in section 2.3 of [Unicode]. The characters defined in the following ranges are also discouraged. They are either control characters or permanently undefined Unicode characters:

[#x7F-#x84], [#x86-#x9F], [#xFDD0-#xFDEF],
[#x1FFFE-#x1FFFF], [#x2FFFE-#x2FFFF], [#x3FFFE-#x3FFFF],
[#x4FFFE-#x4FFFF], [#x5FFFE-#x5FFFF], [#x6FFFE-#x6FFFF],
[#x7FFFE-#x7FFFF], [#x8FFFE-#x8FFFF], [#x9FFFE-#x9FFFF],
[#xAFFFE-#xAFFFF], [#xBFFFE-#xBFFFF], [#xCFFFE-#xCFFFF],
[#xDFFFE-#xDFFFF], [#xEFFFE-#xEFFFF], [#xFFFFE-#xFFFFF],
[#x10FFFE-#x10FFFF].

Whitespace characters定义为:

S    ::=    (#x20 | #x9 | #xD | #xA)+ 

Name and token characters定义为:

NameStartChar    ::=    ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] 

NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]

仅举几例。在字面量、注释、字符数据、处理指令、CData 部分等中还有更多字符定义。

因此,您需要阅读 XML 规范以了解在 XML 的任何给定上下文中允许使用哪些 Unicode 代码点。不同的部分和语法元素对于可接受和 Not Acceptable 内容有不同的规则。

关于xml - 对 xml 不友好的 utf-8 字符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com