如何正确显示在VB的Textbox中正确显示以下Unicode所代表的符号?

dream901 2003-04-04 09:28:03
我想在俄罗斯windows下用文本框显示某些符号(已知Unicode值),它们在word、notepad、
ultraedit等字处理软件中均能正确显示,但是在vb文本框中却变成了"?"。我是使用
字符数组通过text1.text=text1.text & bytUnicode(i) 的形式加入到文本框的,但是像€(U+20AC)就能正常显示,像¨(U+00A8)就变成了"?",请问为何有此不同呢?我改用简体中文windows2000仍然无法得到改善。如何解决??

下面是我想在文本框中显示的符号的列表:

¨(U+00A8) ˆ(U+02C6) ª(U+00AA) Ö(U+00D6) ¿(U+00BF)
̀(U+0300) ́(U+0301) ˜(U+02DC) ¥(U+00A5) ö(U+00F6)
¡(U+00A1) ¢(U+00A2) £(U+00A3) Ç(U+00C7) Ä(U+00C4)
Ü(U+00DC) ²(U+00B2) β(U+00DF) ä(U+00E4) ü(U+00FC)

注:其中(U+0300) (U+0301)两个,连csdn的文本框也无法显示
...全文
755 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dream901 2003-04-18
  • 打赏
  • 举报
回复
ouyi0901说的控件终于找到了,问题得到了完满的解决,谢谢大家!
dream901 2003-04-14
  • 打赏
  • 举报
回复
再问一下,会不会跟字体有关呢?
dream901 2003-04-09
  • 打赏
  • 举报
回复
首先感谢楼上各位的热心帮助,但问题还是没有解决(ouyi0901说的控件我的机没有)。
为了能更直观的解释我想问什么,我编了一段小程序如下

Private Sub test()
Dim byttmp(3) As Byte
'"€"的unicode是U+20AC,"¡"(倒过来的感叹号)的Unicode是U+00A1,在字符映射表中可以查到
byttmp(0) = &HAC
byttmp(1) = &H20
byttmp(2) = &HA1
byttmp(3) = &H0
Text1.Text = byttmp
End Sub

执行程序就能看到前面的"€"能正常显示,但是倒感叹号却成了问号,为什么呢?

以上程序在PWIN2000用VB6执行
asfawefawf 2003-04-06
  • 打赏
  • 举报
回复
楼上的说什么?怎么不行?
zjh 2003-04-06
  • 打赏
  • 举报
回复
如果这些ASCII是自定义的,用StrConv就不行了啊!
叶帆 2003-04-05
  • 打赏
  • 举报
回复
StrConv 函数

返回按指定类型转换的 Variant (String)。

语法

StrConv(string, conversion, LCID)

StrConv 函数的语法有下面的命名参数:

部分 说明
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)


设置值

conversion 参数的设置值为:

常数 值 说明
vbUpperCase 1 将字符串文字转成大写。
vbLowerCase 2 将字符串文字转成小写。
vbProperCase 3 将字符串中每个字的开头字母转成大写。
vbWide* 4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。
vbHiragana** 32** 将字符串中片假名字符转成平假名字符。
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。


*应用到远东国别。
**仅应用到日本。
注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的国别使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。

下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。

说明

在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。
用户 昵称 2003-04-05
  • 打赏
  • 举报
回复
把你的符号放到byte数组中,用strconv( bytearray, vbunicode) 看看
ouyi0901 2003-04-04
  • 打赏
  • 举报
回复
VB里自带一组支持Unicode的控件“Microsoft Forms 2.0 object Library”,你试试看
应该可以解决你的问题
matchchen 2003-04-04
  • 打赏
  • 举报
回复
up

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧