我想在俄罗斯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的文本框也无法显示

解决方案 »

  1.   

    VB里自带一组支持Unicode的控件“Microsoft Forms 2.0 object Library”,你试试看
    应该可以解决你的问题
      

  2.   

    把你的符号放到byte数组中,用strconv( bytearray, vbunicode) 看看
      

  3.   

    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 格式的这种数组时,使用赋值语句。
      

  4.   

    如果这些ASCII是自定义的,用StrConv就不行了啊!
      

  5.   

    首先感谢楼上各位的热心帮助,但问题还是没有解决(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执行
      

  6.   

    ouyi0901说的控件终于找到了,问题得到了完满的解决,谢谢大家!