使用以下代码创建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字符没有出现。
答案 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就是这个: