如何在VB6中显示Unicode字符?

CJ7*_*CJ7 4 vb6 unicode chr

可能重复:
在VB6中显示Unicode文本(希伯来语等)的最佳选择是什么

9646在VB6中显示unicode字符(BLACK VERTICAL RECTANGLE)的正确方法是什么?

当我尝试ChrW(9646)它显示?.

bon*_*igo 6

这是一个探索的教程.看一下这篇文章的黑色垂直矩形.

假设已打开Unicode,请将以下字符串发送到要显示的窗口:

Wchar_t mStr[] = {9646,0,0};

参考.这个代码片段和引用更加内联C++.使用以下步骤在Visual C++中关闭/打开UNICODE的位置:

  1. 在VS2008/2010中打开您的项目;

  2. 在Solution Explorer中右键单击该项目,然后单击Properties;

  3. 选择Configuration Properties-> General,选择Character Set并更改current valueUse Multi-Byte Character Set.(关闭)


好文章怀疑在VB中显示UNICODE.

在a中使用textbox控件时Form,请将其添加Microsoft Forms 2.0 Object Library为参考库.此组件提供Unicode支持的控件,例如:文本框,标签,命令按钮,列表框,组合框,复选框,单选按钮,切换按钮,图像,标签和多页控件.

使用VB6并显示非us-ANSI字符,您需要了解3个主要内容:

  • 在内部,VB6将字符串存储为Unicode.
  • 显示字符串时,标准VB6文本框和标签控件执行从Unicode到ANSI的隐式(和内部)转换.
  • 标准VB6文本框和标签控制根据可以指定字符编码显示ANSI字节.

所述后Unicode-to-ANSI转换,VB6然后尝试根据控制的显示字符数据Font.Charset属性,而如果保持不变等于ANSI字符集.更改控件的Font.Charset更改方式是VB6解释"ANSI"字节的方式.换句话说,你告诉VB6将字节视为一些其他字符编码而不是"ANSI".

例如,考虑尝试Unicode JapaneseEnglish计算机上显示字符串:您设置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


Juk*_*ela 0

显示问号的原因是该字符不存在于正在使用的字体中。您需要将字体设置为支持 BLACK VERTICAL RECTANGLE 的字体,例如 Arial Unicode MS 或 Lucida Sans Unicode。

  • 缺失的字形会生成一个矩形,而不是问号。 (2认同)