在C中打印unicode文字

时间:2015-01-15 15:50:19

标签: c++ c unicode encoding unicode-literals

我正在为Raspberry Pi制作OpenVG应用程序,它显示一些文本,我需要支持外来字符(在这种情况下为波兰语)。我打算准备一个函数,用一些更高级别的语言将unicode字符映射到C中的文字,但是现在用C语言打印这些文字会有问题。

鉴于以下代码:

//both output the "ó" character, as expected 
char     A[] =  "\xF3"; 
wchar_t  B[] = L"\xF3"; 

//"ś" is expected as output but instead I get character with code 0x5B - "[" 
char     A[] =  "\x15B"; 
wchar_t  B[] = L"\x15B"; 

大多数波兰字符都有3位十六进制代码。当我尝试打印“ś”(0x15B)时,它会打印字符“[”(0x5B)。事实证明我无法使用超过2位数的代码打印任何unicode字符。

使用数据类型的原因是什么?我考虑过使用char16_t和char32_t但是系统中找不到头文件。

1 个答案:

答案 0 :(得分:1)

这就是这个

char A[]={'\xc5','\x9b'};

c59b是UTF-8的“ś”(0x15B)。