上标的Unicode字符显示方框:ࠚ

时间:2011-10-10 15:00:53

标签: c++ winapi unicode

使用以下代码创建Unicode字符串:

wchar_t HELLO[20];
wsprintf(HELLO, TEXT("%c"), 0x2074);

当我将其显示在Win32控件上时,如文本框或按钮,它会映射到[] Square。 我该如何解决 ? 我尝试使用Eclipse(MinGW)和Microsoft Visual C ++(2010)进行编译。 另外,UNICODE is defined at the top

编辑:

我认为这可能与我的系统有关,因为当我访问时:http://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts 一些unicode字符没有出现。

2 个答案:

答案 0 :(得分:7)

您使用的字体不包含该字符的字形。您可能需要安装一些新字体来克服这一缺陷。

你选择的角色是'SAMARITAN MODIFIER LETTER EPENTHETIC YUT'(U + 081A)。也许你是在U + 2074之后,即'SUPERSCRIPT FOUR'(U + 2074)。你需要十六进制:0x2074。

请注意,您已将问题更改为阅读0x2074,但原始版本为2074。无论哪种方式,如果您看到一个框,表明您的字体缺少该字形。

答案 1 :(得分:2)

您从维基百科获得的字符以十六进制表示,因此您的代码应为:

wchar_t HELLO[20];
wsprintf(HELLO, TEXT("%c"), (wchar_t)0x2074);  // or TEXT('\x2074')

如果它仍然不起作用,那就是字体问题;如果你需要泛Unicode字体,似乎Code2000是最完整的那个。


有趣的事实:具有十进制代码2074(即十六进制81a)的字符似乎actually be a box(或它是如此奇怪的野兽甚至是FileFormat.Info中的图像轮廓错误。 :)

对于好奇的人:事实证明0x081a就是这个:

enter image description here