发布于 2012-12-29 11:35:33
假设Unicode打开,将以下字符串发送到窗口显示:
Wchar_t mStr[] = {9646,0,0};
参考文献。这个代码片段和引用更多地内衬了C++。在Visual中,可以使用以下步骤关闭/打开UNICODE:
Configuration Properties-> General
,选择Character Set
并将current value
更改为Use Multi-Byte Character Set
。(关机)好文章关于 在VB中显示UNICODE。
当您在Form
中使用Form
控件时,将Microsoft Forms 2.0 Object Library
添加为引用库。此组件提供Unicode支持的控件,例如: textbox、label、命令按钮、列表框、组合框、复选框、单选按钮、切换按钮、图像、制表符和多页控件。
使用VB6并显示非us字符,您需要了解以下三项主要内容:
在Unicode-to-ANSI
转换之后,VB6尝试根据控件的Font.Charset
属性显示字符数据,如果保持不变,则该属性等于ANSI字符集。更改控件的Font.Charset
会改变VB6解释"ANSI“字节的方式。换句话说,您告诉VB6将字节视为其他字符编码,而不是"ANSI“。
例如,考虑尝试在Unicode Japanese
计算机上显示English
字符串:您设置了Font.Charset = 128
(用于日语),但是您的Font.Charset = 128
字符串显示为所有问号字符。这是因为VB6首先尝试将您的日语Unicode字符串转换为ANSI,这是用于英语计算机的Windows-1252。日语字符在Windows1252中不能表示.每个字符都无法转换,并被问号替换。用于例如在TextBox控件的属性设置中选择日语脚本与在运行时.设置Font.Charset相同
正如Jukka所说,考虑到字体中字符的可用性, Font
在显示UNICODEs方面起着至关重要的作用。正如汉斯所说,glyph
不受支持的字体产生一个矩形。因此,您需要确保所选择的Font
能够呈现象形文字。例如,MS Sans Serif
字体不呈现ƒ
(带钩子的拉丁文小写字母F,2字节Unicode值为0x0192),因此您将看到一个细矩形方框。然而,在Windows上,很少有字体具有足够宽的字符库来表示中文。
在以下代码中的字体名称()是在沿字体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表单。
写完所有这些文章之后,我注意到了这篇MSDN文章。至少这是VB确认:D
发布于 2012-12-30 10:04:22
您需要的是使用"Unicode感知“控件。VB6只附带了其中的几个,但是在Vista和更高版本或XP中(只有平板版,除非您使用这个库的非InkEdit版本),InkEdit控件可以做到这一点。
InkEdit1.Text = ChrW$(9646)
注意$
,它指示一个函数返回一个字符串,而不是一个包含一个字符串的变体。
InkEdit控件实际上是一个增强的RichTextBox,它支持墨迹条目以及在启用墨汁的系统上进行键入。它也是一个Unicode控件,它支持Unicode属性(如.Text
)。
标准的MSHFlexGrid、DataGrid和其他一些控件也可以识别Unicode。
有关问题中的字符,请参见shapes.html。你基本上可以忽略关于ANSI,字符集等的jabber jabber,它是相关的,但在这里不适用.
▮ 9646 ▮ 25AE BLACK VERTICAL RECTANGLE
发布于 2012-12-29 10:52:25
它显示问号的原因是该字符不存在于所使用的字体中。您需要将字体设置为支持黑色垂直矩形的人,例如Arial或Lucida。
https://stackoverflow.com/questions/14080723
复制相似问题