帮忙看看这段代码实现的是什么功能?谢谢吭,在线等。。。
<%
Function GetLen(str)
Dim l, t, c, i
l = Len(str)
t = l
For i = 1 To l
c = Asc(Mid(str, i, 1))
If c < 0 Then c = c + 65536
If c > 255 Then t = t + 1
Next
GetLen = t
End Function
'"len"返回字符串内字符的数目,或是存储一变量所需的字节数。"Mid"从字符串中返回指定数目的字符。
%>
---------------------------------------------------
response.write "<a href='typenews.asp?id="&id&"'title='"&title&"'>"
if GetLen(title)>Linenum then
response.write ""&LeftStr(title,Linenum-2)&""
response.write "..."
else
response.write ""&title&""
end if
在这段代码中“GetLen”函数实现的是什么功能?
[解决办法]
很明显,GetLen(str)返回的是str的某种长度。其实,它是这样定义的:
1、若字符是ASCII字符(不管是全角还是半角,即不管是双字节字符还是单字节字符),则其长度算为1;
2、其它字符(汉字、韩文等)长度算为2。
最后把所有字符的长度相加,就得到GetLen(str)。
If c < 0 Then c = c + 65536 是判断是否是双字节字符,如汉字、全角英文字符。
If c > 255 Then t = t + 1 则继续判断,该双字节字符是否英文字符,因为扩展ASCII字符集的编码范围是0-255,不管是采用单字节编码(半角,真正英文编码),还是双字节编码(如中文国标GB2312),都是一样的,这是为了保持兼容性。
如GetLen("aa")=GetLen("aa")=2,GetLen("aa中")=GetLen("aa中")=4