我正在尝试打印还包含Unicode字符的向量:
unsigned short RussianStr[] = { 0x044D, 0x044E, 0x044F, 0x0000};
由于这个原因,我不能使用char的向量,但是使用unsigned short。如何打印所有矢量字符?使用printf()函数,我只能看到打印的第一个字符
答案 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
和许多其他内容。