Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c中打印utf-16字符_C_Unicode_Utf 16 - Fatal编程技术网

如何在c中打印utf-16字符

如何在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

我想打印的是:

我在windows上使用Ubuntu 64位VMware工作站,并使用八进制转储:

utf-16 LE txt文件中三个字符的十六进制值

输出:


如何正确打印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;
}