关于如何在VB中处理中文字符的一点解释

Eddy 发布于2010-3-3 19:32:9 分类: 程序设计 已浏览loading 网友评论0条 我要评论

以下内容摘自网络:

我们知道在处理字符串时,VB把一个汉字当成一个字符来进行出来,结果导致按一般情况做出来的key不支持中文,所以我们要做出支持中文的VBkey,就必须正确的得到组成一个汉字的两个ASCII码,如果得到呢?这里有两种方法:
  第一种:
    第一步:使用Strconv()函数进行字符串转换.
        该函数的作用是对输入的字符串进行编码转换,返回值是一个字符串.该函数原型如下:
      StrConv(string, conversion, LCID)
      string:要转换的字符串(必须)
      conversion:整数类型,表示要进行何种转换(必须)
      LCID:本地LocaleID,相当于语种类型(可选)
      如果我们要获得组成汉字的两个ASCII码,conversion可以选择为vbFromUnicode,表示将Unicode转换成本地缺省的代码页,如果你的是中文windows,就可以通过下一步获得组成汉字的两个ASCII码了.(其他语种的windows也许不可以,欢迎测试)
    第二步:提取ASCII码:
      由于Strconv的返回值是一个字符串,如何得到字符串中每个字符的ASCII码了,很多人会想到用Mid$函数或MidB$函数,可惜在这里如果用这两个函数的话,你会发现你有很多字符无法得到,为什么呢?因为Mid$(),MidB$()都无法实现对大于ASCII码大于127的字符的截取,所以我们必须采用其他的方法.在VB中Byte类型的数组可以直接跟字符串数组进行相互赋值,如果将字符串赋给一个Byte类型的数组,如果该字符串中的字符是汉字(必须是转换后的),则用一个数组的两个元素来保存该字符的ASCII码,否则用一个数组元素.
      比如:
          dim a() as byte
          a=strconv("我a",vbFromUnicode)
      '则a(0)=206,a(1)=210,a(2)=97 注意:数组下标是从0开始
  综合一、二步,就可以写出完整的代码:
          dim AscArray() as byte
          dim strSN as string
          dim i as long
          AscArray=strconv(strSN,vbFromUnicode)
          for i=0 to Ubound(AscArray)
            '处理过程
          next i
第二种方法:
    直接采用ASC()函数,对ASC()的返回值进行处理就可以准确的得到组成一个汉字的两个字节的ASCII码.
    如:
        dim HighAsc as byte
        dim LowAsc as byte
        dim lngAscii as long
        lngAscii=ASC("我")
        HighAsc=int((65536+lngAscii)/256)
        LowAsc=(65536+lngAscii) mod 256
        '结果 HighAsc=206,LowAsc=210

本文结束.
再加一个:如果得到含中文字符的字符串的长度
用LenB(strconv(字符串,vbFromUnicode))就可以得到该字符串的长度。

我再补充一个方法:

MsgBox Hex(Asc("中"))                        'D6D0
MsgBox Mid(Hex(Asc("中")), 1, 2)      'D6
MsgBox Mid(Hex(Asc("中")), 3, 2)      'D0

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/391.html     欢迎订阅Eddy Blog

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言