Possible Duplicate:
07000
在VB6中显示unicode字符9646(BLACK VERTICAL RECTANGLE)的正确方法是什么?
当我尝试ChrW(9646)它会显示?
假设Unicode已打开,请将以下字符串发送到窗口以显示:
Wchar_t mStr [] = {9646,0};
0700这个代码片段和引用更加内联C.您可以使用以下步骤在Visual C中关闭/打开UNICODE:
>在VS2008 / 2010中打开您的项目;
>在Solution Explorer中右键单击该项目,然后单击Properties;
>选择配置属性 – >常规,选择字符集并将当前值更改为使用多字节字符集. (关闭)
好文章怀疑displaying UNICODE in VB.
在窗体中使用文本框控件时,将Microsoft Forms 2.0对象库添加为参考库.此组件提供Unicode支持的控件,例如:文本框,标签,命令按钮,列表框,组合框,复选框,单选按钮,切换按钮,图像,标签和多页控件.
使用VB6并显示非us-ANSI字符,您需要了解3个主要内容:
>在内部,VB6将字符串存储为Unicode.
>显示字符串时,标准VB6文本框和标签控件执行从Unicode到ANSI的隐式(和内部)转换.
>标准VB6文本框和标签控件根据您可以指定的字符编码显示ANSI字节.
在Unicode到ANSI转换之后,VB6然后尝试根据控件的Font.Charset属性显示字符数据,如果保持不变则等于ANSI字符集.更改控件的Font.Charset改变了VB6解释“ANSI”字节的方式.换句话说,你告诉VB6将字节视为一些其他字符编码而不是“ANSI”.
对于例如考虑尝试在英语计算机上显示Unicode日语字符串:设置Font.Charset = 128(日语),但Unicode字符串显示为所有问号字符.这是因为VB6首先尝试将日语Unicode字符串转换为ANSI,英语计算机为Windows-1252.日语字符在Windows-1252中无法表示.每个字符都无法转换,并替换为问号.例如在TextBox控件的属性设置中选择日语脚本与在运行时设置Font.Charset相同.
正如Jukka所说,Font在字体中显示字符的可用性,因此显示了UNICODE的重要作用.正如Hans所说,不支持字形的Font会产生一个矩形.因此,您需要确保您选择的字体能够渲染字形.对于例如MS Sans Serif字体不呈现ƒ(带有HOOK的LATIN SMALL LETTER F,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
码:
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
VBE IDE中的输出:您也可以尝试VB6格式.