首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在VB6中显示Unicode字符?

如何在VB6中显示Unicode字符?
EN

Stack Overflow用户
提问于 2012-12-29 10:21:08
回答 3查看 43.9K关注 0票数 5

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

9646 (黑色垂直矩形)中显示unicode字符的正确方法是什么?

当我尝试ChrW(9646)时,它会显示?

EN

回答 3

Stack Overflow用户

发布于 2012-12-29 11:35:33

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

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

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

参考文献。这个代码片段和引用更多地内衬了C++。在Visual中,可以使用以下步骤关闭/打开UNICODE:

  1. 在in 2008/2010中打开您的项目;
  2. 右键单击“解决方案资源管理器”中的项目,然后单击“属性”;
  3. 选择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字符,您需要了解以下三项主要内容:

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

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运行时设置的

字符集属性:

代码语言:javascript
运行
复制
134     Simplified Chinese, gb2312 - Mainland China(PRC) and Singapore
136     Traditional Chinese, big5 - Taiwan and Hong Kong

代码:

代码语言:javascript
运行
复制
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

票数 7
EN

Stack Overflow用户

发布于 2012-12-30 10:04:22

您需要的是使用"Unicode感知“控件。VB6只附带了其中的几个,但是在Vista和更高版本或XP中(只有平板版,除非您使用这个库的非InkEdit版本),InkEdit控件可以做到这一点。

代码语言:javascript
运行
复制
InkEdit1.Text = ChrW$(9646)

注意$,它指示一个函数返回一个字符串,而不是一个包含一个字符串的变体。

InkEdit控件实际上是一个增强的RichTextBox,它支持墨迹条目以及在启用墨汁的系统上进行键入。它也是一个Unicode控件,它支持Unicode属性(如.Text )。

标准的MSHFlexGrid、DataGrid和其他一些控件也可以识别Unicode。

有关问题中的字符,请参见shapes.html。你基本上可以忽略关于ANSI,字符集等的jabber jabber,它是相关的,但在这里不适用.

▮ 9646 ▮ 25AE BLACK VERTICAL RECTANGLE

票数 1
EN

Stack Overflow用户

发布于 2012-12-29 10:52:25

它显示问号的原因是该字符不存在于所使用的字体中。您需要将字体设置为支持黑色垂直矩形的人,例如Arial或Lucida。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14080723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档