如何在c中打印utf-16字符
我想打印的是: 我在windows上使用Ubuntu 64位VMware工作站,并使用八进制转储: utf-16 LE txt文件中三个字符的十六进制值 输出:如何在c中打印utf-16字符,c,unicode,utf-16,C,Unicode,Utf 16,我想打印的是: 我在windows上使用Ubuntu 64位VMware工作站,并使用八进制转储: utf-16 LE txt文件中三个字符的十六进制值 输出: 如何正确打印utf-16字符?使用wchar\u t并阅读,例如检查可以用于打印宽字符的修饰符。至于代码为什么打印'N',请检查例如,并查看十六进制值0x4e(整数中的低位字节)对应的是什么。然后想一想,想一想为什么要打印'N'。你的问题不清楚。您是指编码UTF-16还是您在图像中显示的标志符号,但它们应进行编码?与大多数其他sa
如何正确打印utf-16字符?使用
wchar\u t
并阅读,例如检查可以用于打印宽字符的修饰符。至于代码为什么打印'N'
,请检查例如,并查看十六进制值0x4e
(整数中的低位字节)对应的是什么。然后想一想,想一想为什么要打印'N'
。你的问题不清楚。您是指编码UTF-16还是您在图像中显示的标志符号,但它们应进行编码?与大多数其他sane操作系统一样,Linux系统通常使用UTF-8,而不是UTF-16。无论如何,可变长度字符编码超出了标准C。可能有一个库,但要求一个库在这里是离题的。您给出的八进制转储包含UTF-16代码0x4e16,而不是C代码中的0x164e。如果您的Linux终端会话设置为合适的UTF-8语言环境,并且可以正确显示UTF-8序列,然后你的C程序需要做的就是调用setlocale(LC_CTYPE,“”)
(由#include
)声明)并使用格式说明符%lc
将包含在wint
(由#include
声明)类型的相应参数中的字符作为多字节UTF-8序列输出。如果重定向到文件,重定向的输出将被编码为UTF-8。如果您希望将输出编码为UTF-16,则必须执行其他操作。
int main()
{
char c = 0x41;
printf("char is : %c\n",c);
c = 0xe9;
printf("char is : %c\n",c);
unsigned int d = 0x164e;
printf("char is : %c\n",d);
return 0;
}