在VB中如何處理中文名 (2千字)

看雪資料發表於2003-02-11

我們知道在處理字串時,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))就可以得到該字串的長度。

相關文章