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