繁体   English   中英

C字符串文字中的UTF-8转义序列

[英]UTF-8 escape sequence in C string literal

在C语言中,我以以下形式指定Unicode字符:

"\uCODEPOINT"

但是,我找不到有关该如何存储的任何详细信息。 是UTF-8、16、32? 是否有指定UTF-8编码的符号,还是我必须用十六进制写每个字节?

\\ uXXXX是(短格式)通用字符名称。 例如,您可以在程序中的任何位置使用\A代替A这可以在源文本中(例如,作为标识符的一部分),也可以在字符或字符串文字中。 如果在文字中使用它,则与在该文字中使用A完全相同。 编码长度超过8位的字符名称也是如此...您可以使用通用名称,如果您有允许输入的输入法,也可以直接输入字符。 字符在内存中的编码方式取决于实现方式,取决于字符是以““还是L”“文字出现,并取决于字符是否为执行字符集的成员。 请注意C标准:

每个源字符集成员以及字符常量和字符串文字中的转义序列都将转换为执行字符集的相应成员; (如果没有对应的成员,则将其转换为实现定义的成员,而不是空(宽)字符。)

在使用UTF-8编码表示非宽字符串的实现中,出现在非宽字符串文字中的\\ uXXXX当然将与文字中的所有其他字符一起以UTF-8编码。 如果\\ uXXXX以宽字符串文字形式出现,它将被编码为值0xXXXX的宽字符。

但是,我找不到有关该如何存储的任何详细信息。

执行字符集取决于实现。 但是,如果默认值不是您想要的值,则某些编译器的确会有某种选项可以对其进行更改。 C11标准还有其他方法可以以UTF编码(例如u8"Hello" )指定Unicode字符串文字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM