ascii码在vb里的存储类型是哪个??

解决方案 »

  1.   

    Private Sub Form_Load()
    MsgBox TypeName(Asc("a"))
    End Sub
      

  2.   

    1、VB不直接支持Ascii码,只支持UniCode。2、VB里的字符串是UniCode编码的。3、VB里的字符串可以和Byte数组直接赋值。
    比如:
    String1=Bytes1()
    Bytes1()=String1
    但只有Unicode编码才能正常显示字符。4、以Ascii码存储的字符串数组需要转换为Unicode编码。
    如果:
    Bytes1()为一个Ascii码字节数组。
    则:
    String1=StrConv(Bytes1(),vbUnicode)
    或:
    Bytes2()=StrConv(Bytes1(),vbUnicode)
    这样可以得到一个UniCode编码的字符串。5、将Unicode编码转换为Ascii编码。
    如果:
    Bytes1()为一个Unicode编码字节数组或字符串。
    则:
    String2=StrConv(Bytes1(),vbFromUnicode)
    或:
    Bytes2()=StrConv(Bytes1(),vbFromUnicode)
    这样可以得到一个Ascii编码的字符串。6、没有Ascii。
    通常说的Ascii是IBM的字符集。
    Windows支持的字符集叫做ANSI字符集,ANSI字符集在0-127的范围和Ascii兼容。
    但是,在128-255的扩展编码和Ascii是不一样的。典型的例子是:你试图把DOS下用Ascii制表符画的表格文本显示到Windows下是不可能的。
    如果只是英文和数字,那么这个区别对你没有影响。7、如果有中文。
    VB下用UniCode表示中文;而你所谓的“Ascii编码”某些时候可能也表示“GB2312”(因为很多人不知道该如何表达这个概念,所以都叫它Ascii)。
    中文编码有三种:
    1、UniCode是国际通用的中文编码;
    2、Big5是中国台湾省的编码;
    3、GB2312/GBK是中国大陆的编码(GB2312不支持繁体、GBK支持繁体);
    无论是中国大陆、中国台湾,同一汉字在VB下的UniCode编码是一样的。
    在非UniCode编码的情况下(也就是“本地编码”情况下),UniCode经过代码页转换成Big5或是GB码。
    文本文件通常以“本地编码”保存。
    Big5和GB码有彼此互相不对应的内容。有些字符GB没有、有些字符Big5没有,因此转换会有盲区。8、如果你要100%显示Ascii字符。
    编码显示为什么字符的根本因素取决于字库,你甚至可以用编码表示花纹(参见Wingdings字体)。
    如果由于特殊原因,需要100%的显示出Ascii 128编码以上的扩展字符(比如早期设备上使用制表符画的表),那么你有两个办法:
    (1)需要一个Ascii字库。
    (2)转换为对应的全角字符(全角字符有全部的Ascii的内容)。这种转换可以用查表法来实现。
      

  3.   

    最后我教你一个Ascii和UniCode的人工转换办法。以4个空格为例:Ascii编码:20 20 20 20UniCode编码:20 00 20 00 20 00 20 00产生字符串“1234”的程序:Ascii编码:Dim Bytes() As Bytes
    For x =0 To 3
      i = x
      Bytes(i) = 49 + x
    Next这个时候,Bytes()是Ascii编码的字符串“1234”。但你想转换成VB下的String,需要这样。
    String1 = Bytes()
    Debug.print String1 '显示乱码,因为String1是Ascii编码,而不是UniCode编码。String2 = StrConv(Bytes(), vbUniCode)
    Debug.print String2 '显示"1234"UniCode编码:Dim Bytes() As Bytes
    For x =0 To 3
      i = x * 2
      Bytes(i) = 49 + x
    NextString1 = Bytes()
    Debug.print String1 '显示"1234"