unicode - 如何在VB6中显示Unicode字符?

标签 unicode vb6 chr

Possible Duplicate:
What’s the best option to display Unicode text (hebrew, etc.) in VB6

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

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

最佳答案

这是一个tutorial探索。看看这篇文章的black vertical rectangle .

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

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

Reference 。此代码片段和引用更符合 C++。您可以使用以下步骤在 Visual C++ 中关闭/打开 UNICODE:

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

  2. 在解决方案资源管理器中右键单击该项目,然后单击“属性”;

  3. 选择配置属性->常规,选择字符集并将当前值更改为使用多字节字符集。 (关闭)

<小时/>

关于 displaying UNICODE in VB 的好文章

当您在Form 中使用textbox 控件时,请添加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所说字体在显示UNICODEs中起着至关重要的作用,因为字体中字符的可用性。正如汉斯所说,不支持的字体生成一个矩形。因此,您需要确保您选择的字体能够渲染字形。例如MS Sans Serif 字体不会渲染 f(带钩的拉丁文小写字母 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

VBE IDE 中的输出:您也可以以 VB6 形式尝试一下。

enter image description here

写完以上所有内容后,我注意到了这个MSDN文章。好吧,至少这是 VB 确认:D

关于unicode - 如何在VB6中显示Unicode字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14080723/

相关文章:

vb6 - 如何在VB6中录制麦克风的声音?

VB.net 将 chr(255) 返回为 chr(63)

python-2.7 - pickle 中 io 与字符串内容的不同行为

Python NLTK : SyntaxError: Non-ASCII character '\xc3' in file (Sentiment Analysis -NLP)

sql-server - 将 MS-SQL 数据导入 Access Table ADO

debugging - vb6 如何在 msgbox 中进入 Debug模式

unicode - 如何在 elisp 中获取字符的代码点(以及其他方式)?

python - 使用 ord 和 chr 移动字母

perl - 如何使用 Perl 在 Windows 上创建 Unicode 目录?

c++ 文字 u8 和 BOM(字节顺序掩码)