Wchar_t mStr[] = {9646,0,0};
参考。这个代码片段和参考更符合C++。在Visual C++中,您可以使用以下步骤关闭/打开UNICODE:配置属性 -> 常规
,选择字符集
并将当前值
更改为使用多字节字符集
。(关闭)
关于在VB中显示UNICODE的好文章 displaying UNICODE in VB。
当您在Form
中使用textbox
控件时,需要将Microsoft Forms 2.0 Object Library
添加为参考库。此组件提供支持Unicode的控件,例如:文本框、标签、命令按钮、列表框、组合框、复选框、单选按钮、切换按钮、图像、选项卡和多页面控件。
在VB6中处理并显示非美国ANSI字符时,您需要了解3个主要内容:
Unicode-to-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所说,字体在显示UNICODE时发挥着至关重要的作用,因为字体中包含了字符的可用性。正如Hans所说,不支持字形的字体会产生一个矩形。因此,您需要确保您选择的字体能够呈现字形。例如,MS Sans Serif字体无法呈现ƒ(带钩的小写拉丁字母F,2字节Unicode值为0x0192),因此您将看到一个细长的实心矩形框代替它。但是在Windows上,很少有字体具有足够广泛的字符库来表示中文。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
InkEdit1.Text = ChrW$(9646)
$
,它表示一个返回字符串的函数,而不是一个嵌入其中的变量。.Text
。▮ 9646 ▮ 25AE BLACK VERTICAL RECTANGLE
Unicode
的戏法?根据所选择的语言,您可以设置Font.Charset
和Font.Name
属性。 - bonCodigo