在C中,我指定一个形式为:
的Unicode字符"\uCODEPOINT"
但是,我找不到有关如何存储的任何细节。是UTF-8,16,32吗?有没有指定UTF-8编码的符号,还是我必须用十六进制写每个字节?
答案 0 :(得分:2)
\ uXXXX是一种(简短形式)通用角色名称。您可以在程序中的任何位置使用\u0041
来代替A
- 这可以在源文本中,例如,作为标识符的一部分,或者它可以是字符或字符串文字。如果您在文字中使用它,它将与在该文字中使用A
完全相同。这同样适用于编码长度超过8位的字符的名称...您可以使用通用名称,或者如果您有一个允许的输入方法,则可以直接输入字符。字符在内存中的编码方式取决于字符是出现在“”还是L“”文字中,取决于字符是否是执行字符集的成员。请注意C标准:
每个源字符集成员和转义序列的字符常量和 字符串文字转换为执行字符的相应成员 组;如果没有相应的成员,则转换为实施 - 定义的成员,而不是null(宽)字符。)
在使用UTF-8编码表示非宽字符串的实现中,出现在非宽字符串文字中的\ uXXXX当然会以UTF-8编码,以及文字中的所有其他字符。如果\ uXXXX出现在宽字符串文字中,它将被编码为宽字符,值为0xXXXX。
答案 1 :(得分:1)
但是,我找不到有关如何存储的详细信息。
执行字符集取决于实现。但是,如果默认值不是您想要的,某些编译器会有某种options来更改它。 C11标准还有其他方法来指定UTF编码中的Unicode字符串文字(例如u8"Hello"
)。