字串存入資料庫時,其所需位元組數與字串中的字元數是不一定一致的,ASCII字元佔用一個位元組,而漢字需要兩個位元組。下面的函式可以準確計算字串存入資料庫(資料型別為VARCHAR)時的實際長度。
祝你好運!
========================================================
"計算字串轉換為GB2312編碼後的位元組數
FunctionCountStringBytes(ByValstrAsString)AsLong
Dimb()AsByte
DimcountAsLong"計數器
DimiAsLong"迴圈變數
b=str:count=0
Fori=LBound(b)+1ToUBound(b)Step2
Ifb(i)<>0Then"雙位元組字元,需要使用兩個位元組
count=count+2
Else
Ifb(i-1)<=127Then"ASCII字元,只需用一個位元組
count=count+1
count=count+2"擴充套件字元,需要佔用兩個位元組
EndIf
Next
CountStringBytes=count
EndFunction
字串存入資料庫時,其所需位元組數與字串中的字元數是不一定一致的,ASCII字元佔用一個位元組,而漢字需要兩個位元組。下面的函式可以準確計算字串存入資料庫(資料型別為VARCHAR)時的實際長度。
祝你好運!
========================================================
"計算字串轉換為GB2312編碼後的位元組數
FunctionCountStringBytes(ByValstrAsString)AsLong
Dimb()AsByte
DimcountAsLong"計數器
DimiAsLong"迴圈變數
b=str:count=0
Fori=LBound(b)+1ToUBound(b)Step2
Ifb(i)<>0Then"雙位元組字元,需要使用兩個位元組
count=count+2
Else
Ifb(i-1)<=127Then"ASCII字元,只需用一個位元組
count=count+1
Else
count=count+2"擴充套件字元,需要佔用兩個位元組
EndIf
EndIf
Next
CountStringBytes=count
EndFunction