VB中一个汉字算2位,但在用len()等语句时是按一个汉字一位返回的,用以下程序可以返回真实的位数:
Public Function BitLen(SourceString As String)
Dim i As Long, l As Long
For i = 1 To Len(SourceString)
If Asc(Mid(SourceString, i, 1)) < 0 Then l = l + 2 Else l = l + 1
Next i
BitLen = l
End Function
Public Function BitLen(SourceString As String)
Dim i As Long, l As Long
For i = 1 To Len(SourceString)
If Asc(Mid(SourceString, i, 1)) < 0 Then l = l + 2 Else l = l + 1
Next i
BitLen = l
End Function
NT,VB用的是DBCS
所以才会出现以上情况
在vb中汉字算1位,所以你用数组转化后得到字符串的长度
dim strByte() as byte
strByte = StrConv("鲁B12345", vbFromUnicode) '把字符串由unicode转为系统默认的内码类型
MsgBox UBound(strByte) + 1 '这里列出字符串的长度以上这么说你也许很多地方都不太明白,但代码绝对正确,相关信息你可以查一下msdn