如何打印2字节Unicode字符

时间:2019-07-02 07:49:56

标签: c

我正在尝试打印还包含Unicode字符的向量:

unsigned short RussianStr[] = { 0x044D, 0x044E, 0x044F, 0x0000};

由于这个原因,我不能使用char的向量,但是使用unsigned short。如何打印所有矢量字符?使用printf()函数,我只能看到打印的第一个字符

2 个答案:

答案 0 :(得分:2)

有专门的功能和类型可以处理宽字符

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main(void) 
{
    wchar_t RussianStr[] = {0x044D, 0x044E, 0x044F, 0x0000};

    setlocale(LC_ALL, "");
    wprintf(L"%ls\n", RussianStr);
    return 0;
}

答案 1 :(得分:0)

问题不在于如何打印utf-16值...。而是如果您的终端完全可以打印utf。

如果您的终端支持utf,那么您只需使用wchar_t系列功能的printf替代方案...而不必使用char,而使用{{1 }}个字符。由于终端通常是面向字节的,因此语言环境功能会将utf-16转换为utf-8,并输出wchar_t字符。

请参阅utf-8和许多其他内容。