2010-7-23 0:0:0 | 作者:sw996 | 0个评论 | 人浏览
网站建设中,会遇到在GB2312下使用截取文字长度函数,转到UTF-8编码时,却不能正常进行取值,这是由于UFT-8编码在计算字符长度时不一样.
本文列举在GB2312编码及UFT-8编码中截取字符串函数:
网站建设:UTF-8编码截取字符串函数:
********************************
'输入参数:
' 1、文字内容
' 2、文字最大长度
*********************************
Public Function CutStr1(Title,TLen)
Dim k,i,d,c
Dim iStr
Dim ForTotalIf CDbl(TLen) > 0 Then
k=0
d=StrLen(Title)
iStr=""
ForTotal = Len(Title)For i=1 To ForTotal
c=Abs(AscW(Mid(Title,i,1)))
If c>255 Then
k=k+2
Else
k=k+1
End IfiStr=iStr&Mid(Title,i,1)
If CLng(k)>CLng(TLen) Then
iStr=iStr&".."
Exit For
End If
NextCutStr1=iStr
Else
CutStr1=""
End If
End Function
网站建设:GB2312编码截取字符串函数:
********************************
'输入参数:
' 1、文字内容
' 2、文字最大长度
*********************************Function CutStr(Str,LenNum)
Dim P_num
Dim I,X
If StrLen(Str)<=LenNum Then
Cutstr=Str
Else
P_num=0
X=0
Do While Not P_num > LenNum-2
X=X+1
If Asc(Mid(Str,X,1))<0 Then
P_num=Int(P_num) + 2
Else
P_num=Int(P_num) + 1
End If
Cutstr=Left(Trim(Str),X)&".."
Loop
End If
End Function*************************************
'取字符串长度函数*************************************
Function strLen(Str)
If Trim(Str)="" Or IsNull(str) Then Exit Function
Dim P_len,x
P_len=0
StrLen=0
P_len=Len(Trim(Str))
For x=1 To P_len
If Asc(Mid(Str,x,1))<0 Then
StrLen=Int(StrLen) + 2
Else
StrLen=Int(StrLen) + 1
End If
Next
End Function
从上述编码原理中得出的结论是: