C获取字符的unicode代码点

时间:2013-12-08 03:30:26

标签: c unicode

如何获取角色的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;
}

1 个答案:

答案 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,则必须从字节序列计算。