C 11 中字符串文字的 Unicode 编码
C 11 中新字符和字符串文字类型的引入扩展了该语言的功能处理 Unicode 编码。虽然现在有四种字符类型(char、wchar_t、char16_t、char32_t)和五种字符串文字类型,但这些字符和字符串与编码机制的行为和兼容性具有特定的规则。
编码兼容性
x 字符引用可用于所有字符串类型,允许包含以十六进制表示的字符值。但是,u 和 U 引用仅限于具有 UTF 编码语义的字符串。字符引用根据包含字符串的编码进行转换。
字符串长度和编码
尽管字符串中包含的 Unicode 代码单元的数量可能会有所不同,具体取决于在编码中,表示字符串文字的数组是固定宽度的,每个元素表示一个代码单元。使用的代码单元数量由字符串的 Unicode 编码决定。
UTF 编码语义
u"" 字符串文字专门采用 UTF-16 编码,而 u8"" 字符串文字以 UTF-8 编码。 UTF-16 编码使用 char16_t 代码单元,而 UTF-8 编码使用可变长度字节序列来表示代码点。
单独代理
单独代理 (0xD800- 0xDFFF) 不允许作为 u 序列中的代码点。必须使用 UTF-16 代理对来表示此范围内的 Unicode 字符。
编码意识
标准字符串操作函数本身并不处理 Unicode 编码语义并处理 UTF - 将字符串编码为一系列单独的代码单元。但是,通过区域设置的输入和输出流允许通过适当的上下文读取和写入 Unicode 编码值。
以上是C 11 字符串文字如何处理不同的 Unicode 编码?的详细内容。更多信息请关注PHP中文网其他相关文章!