我有与 Unicode 相关的问题,在const char*
.
- 据我了解,utf-8 包含 2、3 或 4 字节字符,范围从磅符号到汉字字符。在字符串中,这些以十六进制值表示,使用 \u 作为转义序列。我也明白,在字符串中使用十六进制转义时,将包含其值可以包含在转义中的字符。例如说“abc\x0f0dab”将包含 0f0dab 以在 \x 中被视为十六进制,即使您只想考虑 0f0d。
现在在编写 Unicode 字符串时,假设您要编写“abcdef₤ghi”,其中 Unicode 为 0x24B62,₤ 为 0x00A3。所以我必须将字符串组合为“abc0x24B62def0x00A3ghi”。0x 将考虑可以包含在其中的所有值。因此,如果您想打印“abc62”,则字符串将为“abc0x24B6262”。整个字符串不会被视为 0x 内的 4 字节 unicode (0x24B6262) 值吗?如何解决这个问题?如何打印“abc62”而不是 abc(0x24B6262)?
- 我有一个字符串
const char* tmp = "abc\x0fdef";
。当我使用printf("\n string = %s", tmp);
then 打印时,它将打印 abcdef。这里是哪里0f
?我知道\x0f 的十进制值将存储在字符串中,即15,所以当我们尝试打印时,应该打印15 对吗?我的意思是,它应该是“abc15def”,但它只打印“abcdef”。