为什么我的应用程序不显示Unicode?

时间:2009-12-21 17:24:08

标签: visual-studio-2008 unicode mfc

我从头开始创建了一个MFC应用程序,从一开始就要小心使用CStringW,LPCWSTR等Unicode识别结构来存储和处理数据。 Unicode也在项目中定义。

由于我只会说一种语言,所以我尝试了以下测试,以确保应用程序正确处理和存储Unicode字符串。

在其中一个编辑框中,我输入了ALT + 2061和ALT + 2066,以显示键盘上没有的符号link text编辑框上显示的唯一内容是正方形。在记事本中尝试相同的思路,并正确显示符号。这只是一个字体问题吗?如果是这样,我应该使用什么字体?

更新:

我从unibook复制了几个符号并将它们粘贴到Edit框中。除了少量几个符号外,它们的处理和保存都是正确的,所以我很满意。

圣诞节快乐。

6 个答案:

答案 0 :(得分:2)

确保您描述的Alt键输入法在其他程序中有效。它似乎不适用于我的WinXP系统。

您可能只想从unicode.org下载Unibook并从中复制字符以确保。

答案 1 :(得分:2)

这不是直接的字体问题,这是您的ALT +数字方法的问题。

使用alt键和数字键盘可以输入任何ASCII代码,即使是键盘上没有键的代码也是如此。 可以以这种方式输入unicode字符 - 每次输入4位数代码时,它只会被8位ASCII代码包围:

2061 - > 100000001101 - > 00001101 - > ASCII字符13,音符

它显示为正方形的原因是因为字符13是控制字符,因此大多数现代字体都没有可视化表示。

如果您想使用数字键盘输入unicode字符,那么您需要使用Microsoft添加的扩展模式 - 按住alt,然后按并按住上的加号(+)键。数字小。现在输入所需的unicode字符编号,然后释放alt和+键。

答案 2 :(得分:1)

U + 2061是“FUNCTION APPLICATION”,它是一个特殊的非打印“运算符”字符,U + 2066尚未定义(从Unicode 5.2开始)。因此,您在申请中看到的内容是正确的;可能你在记事本中输入了不同的代码?

答案 3 :(得分:0)

转到Spy ++并查看窗口类。是编辑,还是RICHEDIT的一些变体? RichEdit窗口要求您指定字体,您可以使用CRichEditCtrl::SetDefaultCharFormat

答案 4 :(得分:0)

我建议您在编辑控件上的应用中的某个位置运行函数IsWindowUnicode()。如果它返回TRUE,那么您肯定知道您的应用程序和控件是unicode(然后很可能是字体问题)。 但是,如果它返回false,则必须查看代码和项目设置,以找出您的应用程序/窗口不能识别unicode的原因。

答案 5 :(得分:-1)

是。这是一个字体问题。

我不担心这个,因为客户机器上安装的字体与您的不同。如果他需要汉字,他就会拥有它。您可以强制使用特定字体。然后,您将在Windows上正确地看到它。

我还建议你不要使用W(widechar)来做unicode。见https://stackoverflow.com/questions/1049947/should-utf-16-be-considered-harmful

相关问题