【发布时间】:2014-07-22 07:36:57
【问题描述】:
我有一个 C 语言的 Linux (Ubuntu 13.04) 程序。
#include<stdio.h>
int main()
{
char* cp = "ӐҖ";
printf("%s\n",cp);
printf("%d\n",sizeof(*cp));
printf("%d\n",(unsigned int)*cp);
return 0;
}
第一个和第二个 printf 的输出为:
ӐҖ
1
分别。
1.) 我首先担心的是,在第三个 printf 中,我尝试将字符转换为 unsigned int 以尝试查看代表第一个字符的 unicode 代码点,但我得到 -45。我应该使用什么来查看由 1 字节“char”数据类型表示的单个 unicode 字符的 unicode 代码点的最佳方法?
2.) 第二个问题,当我将此代码移植到 Windows 7 时,[char* cp = "ӐҖ";] 将导致编译器“警告 C4566:由通用字符名称 '\uFFE6' 表示的字符不能在当前代码页 (932) 中表示”。当我运行它时,输出是:
??
1
Windows 不支持“char”数据类型的 unicode 吗?那么我应该使用什么字符数据类型来让我的代码从 Linux 移植到 Windows?
【问题讨论】:
标签: linux windows unicode character-encoding