如何获取角色的Unicode代码点?这是我尝试过的,但它不是打印相同的字符,我是否正确理解unicode的工作原理?
如何获取unicode字符的值?
#include <stdio.h>
int main()
{
char *a = "ā";
int n;
while(a[n] != '\0')
{
printf("%x", a[n]);
n+=1;
}
printf("\n \uC481");
return 0;
}
答案 0 :(得分:1)
首先,您的代码中的修正很少。
#include <stdio.h>
int main()
{
char *a = "ā";
int n = 0; //Initialize n with zero.
while(a[n] != '\0')
{
printf("%x", a[n]);
n+=1;
}
//\u will not work. To print hexadecimal value, use \x
printf("\n %X\n\", 0xC481);
return 0;
}
在这里,您尝试打印每个字节的十六进制值。这不是超过0xff的字符的Unicode值。
unsigned short
是用于存储Unicode值的最常用数据结构,尽管它不能存储所有代码点。如果您需要按原样存储所有Unicode点,请使用必须为32位的int
。
字符的Unicode值是以UTF-32表示的每个字符的数值。否则,如果编码为UTF-8或UTF-16,则必须从字节序列计算。