主题:  请问ASP的字符串长度校验问题

zhnagyi

职务:普通成员
等级:1
金币:0.0
发贴:53
#12001/12/22 2:28:21
在VBscript中字符串长度的计算方法和SQLSERVER中的不一样,前者认为一个中文字符是一个长度,面后者认为是两个长度。可是我在SQL server中限制了字符串的长度,在ASP中校验长度,但是有些字符串的有时是中文的有时是英文的,这样的话在ASP中通过了校验也不一定能正确放入到数据库中,怎么办。怎么办才好。。。。



wowomo

职务:普通成员
等级:1
金币:1.0
发贴:309
#22002/1/7 0:02:09
你可以检测中文。asc(char) > 160 就是中文。
其实在数据库中最好不好限制太严格。在asp中加以限制就足够了



5D荣誉斑竹

职务:普通成员
等级:2
金币:1.0
发贴:343
#32002/1/7 22:58:13
这是一个办法,但不是一个好办法。假如一个字符串中既有英文又有中文,那么长度如何测试?

编辑历史:[这消息被wincheer编辑过(编辑时间2002-01-07 23:09:49)]


wowomo

职务:普通成员
等级:1
金币:1.0
发贴:309
#42002/1/8 12:45:15
呵呵,我只是给了点提示而已。如果你真的要区别中文,把一个中文当成
两个byte看,就写一个function,这个function将字符一个一个的检查,如果
是中文就算2,不就好了吗?

-----------------------------------------------------------
function getLen (str)
length = len (str)
index = 1
result = 0
while (index < length)
if asc(substr(str, index, 1)) > 160 then
result = result + 2
else
result = result + 1
end if
index = index+1
wend
getLen=result
end function

function substr (str, startpos, length)
endpos = startpos + length
str = left (str, endpos)
str = right (str, 1)
substr = str
end function
--------------------------------------------------

我没有测试,但是应该没有问题的。

编辑历史:[这消息被wowomo编辑过(编辑时间2002-01-08 12:45:54)]


kai3000

职务:普通成员
等级:1
金币:0.0
发贴:154
#52002/1/12 18:30:48
good idea!