假设已打开Unicode,请将以下字符串发送到要显示的窗口:
Wchar_t mStr[] = {9646,0,0};
参考.这个代码片段和引用更加内联C++.使用以下步骤在Visual C++中关闭/打开UNICODE的位置:
在VS2008/2010中打开您的项目;
在Solution Explorer中右键单击该项目,然后单击Properties;
选择Configuration Properties-> General,选择Character Set并更改current value为Use Multi-Byte Character Set.(关闭)
好文章怀疑在VB中显示UNICODE.
在a中使用textbox控件时Form,请将其添加Microsoft Forms 2.0 Object Library为参考库.此组件提供Unicode支持的控件,例如:文本框,标签,命令按钮,列表框,组合框,复选框,单选按钮,切换按钮,图像,标签和多页控件.
使用VB6并显示非us-ANSI字符,您需要了解3个主要内容:
所述后Unicode-to-ANSI转换,VB6然后尝试根据控制的显示字符数据Font.Charset属性,而如果保持不变等于ANSI字符集.更改控件的Font.Charset更改方式是VB6解释"ANSI"字节的方式.换句话说,你告诉VB6将字节视为一些其他字符编码而不是"ANSI".
例如,考虑尝试Unicode Japanese在English计算机上显示字符串:您设置Font.Charset = 128(对于日语),但您的Unicode字符串显示为所有问号字符.这是因为VB6首先尝试将日语Unicode字符串转换为ANSI,即英语计算机的Windows-1252.日语字符在Windows-1252中无法表示.每个字符都无法转换,并替换为问号.例如,在TextBox控件的属性设置中选择日语脚本与在运行时设置Font.Charset相同.
正如Jukka所说, Font鉴于字体中字符的可用性,显示UNICODE至关重要.汉斯说,glyph不支持的Font会生成一个矩形.所以你需要确保Font你选择能够渲染字形.例如,MS Sans Serif字体不呈现ƒ(LATIN SMALL LETTER F WITH HOOK,2字节Unicode值为0x0192),因此您将在其位置看到一个薄的实心矩形框.但是在Windows上,很少有字体具有足够广泛的字符表示中文.
在下面的代码中,Font Name()在运行时沿着Font CharSet设置
Charset属性:
134 Simplified Chinese, gb2312 - Mainland China(PRC) and Singapore
136 Traditional Chinese, big5 - Taiwan and Hong Kong
Run Code Online (Sandbox Code Playgroud)
码:
Sub changeToUniCodes()
Dim strTxt2 As String
UserForm1.TextBox2.Font.Charset = 134 '--CHINESESIMPLIFIED_CHARSET
UserForm1.TextBox2.Font.Name = ChrW(&H5B8B) + ChrW(&H4F53) '-- ?? SimSun font
UserForm1.TextBox2.Text = ChrW(37446)
strTxt2 = UserForm1.TextBox2.Text
'notice that ChrW(9246) produces a different character in Chinese
UserForm1.TextBox2.Text = strTxt2 & " " & ChrW(9246)
End Sub
Run Code Online (Sandbox Code Playgroud)
VBE IDE中的输出:您也可以尝试VB6格式.

完成上述所有内容后,我注意到了这篇MSDN文章.好吧,至少它的VB确认:D
显示问号的原因是该字符不存在于正在使用的字体中。您需要将字体设置为支持 BLACK VERTICAL RECTANGLE 的字体,例如 Arial Unicode MS 或 Lucida Sans Unicode。