W Walone Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-14 #1 我想判断输入的字节数。 因为 当用到中文字符串时 所限制的字节数就会突破 写到库里就会出问题 请问有没有好的解决方式???
A ArJianzeng Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-14 #2 根据得到的字符数,然后在根据字符数与字节数的关系计算处字节数,不可以吗?
X xiao.lit Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-14 #4 问一个很笨的问题 一个字符不是能放在一个字节里吗?
W Walone Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-20 #6 各位大侠,难道没有遇到过这样的问题???? 字符数与字节是什么关系,谁能告诉我? 如果是汉字和英文,数字混排时。 是不是还要先区分是不是汉字? 哪位大侠来帮个忙 难道真的没人在网页中用javascript判过字符串的长度?? 给个答案先
各位大侠,难道没有遇到过这样的问题???? 字符数与字节是什么关系,谁能告诉我? 如果是汉字和英文,数字混排时。 是不是还要先区分是不是汉字? 哪位大侠来帮个忙 难道真的没人在网页中用javascript判过字符串的长度?? 给个答案先
I iie Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-20 #7 真的不懂? 字节只是数据的计量单位。 ASCII字符集和扩展的8位字符集,实际上是一个字节存储一个字符。 汉字编码是采取双字节方式的,所以一个汉字占两个字节。 在一个混排字符串中判别汉字的个数,首先是要判别哪个是汉字编码。 双字节扩展编码的一般特征是高位为1,而汉字编码特征是A0A0
真的不懂? 字节只是数据的计量单位。 ASCII字符集和扩展的8位字符集,实际上是一个字节存储一个字符。 汉字编码是采取双字节方式的,所以一个汉字占两个字节。 在一个混排字符串中判别汉字的个数,首先是要判别哪个是汉字编码。 双字节扩展编码的一般特征是高位为1,而汉字编码特征是A0A0
P pxd Unregistered / Unconfirmed GUEST, unregistred user! 2000-08-20 #8 要字符数才真的难呢,len()返回的就是字节数 (英文就是一字符一字节,字节跟字符当然一样了)。
W Walone Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-02 #9 Ok,不用vbscript啦 用javascript中的 string.charCodeAt(i)来得到第i个字符对应的整数代码 然后判其是不是大于127就可以了 但是,很奇怪,我用的是win2000,ie是 5.00.2920.0000 显示的汉字的整数代码都是5位的, 如 "气死我啦".charCodeAt(0)=27668 "气死我啦".charCodeAt(0)=27515 "气死我啦".charCodeAt(0)=25102 "气死我啦".charCodeAt(0)=21862 是所谓的Unicode标准吧,也许! 这样的话,判长度就可以做个循环啦 function judgebytelen(valstr,maxlen) { var len=valstr.length; for(var i=0;i<valstr.length;i++) { if(valstr.charCodeAt(i)>127)len++; } if(len>maxlen)alert("太贪心了吧!"); } ok,搞掂,是不是也该给自己点儿分呀,嘻嘻 在<a href="DispQ.asp?LID=307311">另外一个问题</a>中得出的结论,所以本问题可以撤消了, 不同意的请举手 =)
Ok,不用vbscript啦 用javascript中的 string.charCodeAt(i)来得到第i个字符对应的整数代码 然后判其是不是大于127就可以了 但是,很奇怪,我用的是win2000,ie是 5.00.2920.0000 显示的汉字的整数代码都是5位的, 如 "气死我啦".charCodeAt(0)=27668 "气死我啦".charCodeAt(0)=27515 "气死我啦".charCodeAt(0)=25102 "气死我啦".charCodeAt(0)=21862 是所谓的Unicode标准吧,也许! 这样的话,判长度就可以做个循环啦 function judgebytelen(valstr,maxlen) { var len=valstr.length; for(var i=0;i<valstr.length;i++) { if(valstr.charCodeAt(i)>127)len++; } if(len>maxlen)alert("太贪心了吧!"); } ok,搞掂,是不是也该给自己点儿分呀,嘻嘻 在<a href="DispQ.asp?LID=307311">另外一个问题</a>中得出的结论,所以本问题可以撤消了, 不同意的请举手 =)
W Walone Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-02 #10 哎,老是忘了小于号,幸亏回头看了一眼 function judgebytelen(valstr,maxlen) { var len=valstr.length; for(var i=0;i 小于 valstr.length;i++) { if(valstr.charCodeAt(i) 大于 127)len++; } if(len 大于 maxlen)alert("太贪心了吧!"); }
哎,老是忘了小于号,幸亏回头看了一眼 function judgebytelen(valstr,maxlen) { var len=valstr.length; for(var i=0;i 小于 valstr.length;i++) { if(valstr.charCodeAt(i) 大于 127)len++; } if(len 大于 maxlen)alert("太贪心了吧!"); }
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-03 #11 vbs和js的字符串都是用unicode,就是说英文、中文都是2个字节。 在数据库access,也是用unicode,比如,char(10),不管中英文都是 能放10个字。 但是,如果在其他数据库不是这样,你就可以在数据库里面substr, 比如: insert into ..... values (...., substr(filedX,1,最大字节数), ...)
vbs和js的字符串都是用unicode,就是说英文、中文都是2个字节。 在数据库access,也是用unicode,比如,char(10),不管中英文都是 能放10个字。 但是,如果在其他数据库不是这样,你就可以在数据库里面substr, 比如: insert into ..... values (...., substr(filedX,1,最大字节数), ...)
A Atomic Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-03 #12 Walone, 原来你在这里也开了铺啊,^_^. 但别瞧不起VB哦~~~~~~~~~ 哎,多少人瞧得起? 没办法,初中没有学PASCAL,只会从DOS下的QB转过来. 此外,谢谢你的JS例子,呵呵.
W Walone Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-03 #13 出于几方面考虑,我想还是把字符长度的校验放在客户端javascript中做 1,减轻服务器负担 2, 可以提示用户修改输入错误,且在此之前不用提交页面 没有用截取字符串的方法来做,因为 1,直接截有可能会出现半个汉字 2,并不知道截了以后的结果,是否让人满意,还不如提示修改
出于几方面考虑,我想还是把字符长度的校验放在客户端javascript中做 1,减轻服务器负担 2, 可以提示用户修改输入错误,且在此之前不用提交页面 没有用截取字符串的方法来做,因为 1,直接截有可能会出现半个汉字 2,并不知道截了以后的结果,是否让人满意,还不如提示修改
W Walone Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-03 #14 哪里敢瞧不起VB? 如果是的话,说不定有一堆人要去磨刀啦 我在初中还用过Apple II,那时候,只听说过Basic 不象现在这么花花绿绿的,什么东东语言都有 BTW:不用客气,我也在摸索
P Pipi. Unregistered / Unconfirmed GUEST, unregistred user! 2000-09-04 #15 下面函数可以计算ansi字符串长度: function len_bytes(s) { var ret=0; for(var i=0;i<s.length;i++) ret+=((s.charCodeAt(i) & 0xff00)==0)?1:2; return ret; } 比如:len_bytes("aa大a") 返回长度 5 用 (s.charCodeAt(i) & 0xff00)==0 来判断是不是单字节字符, 为什么不用前面有人说的小于127?big5码的话不一定是2个字节都大于127。
下面函数可以计算ansi字符串长度: function len_bytes(s) { var ret=0; for(var i=0;i<s.length;i++) ret+=((s.charCodeAt(i) & 0xff00)==0)?1:2; return ret; } 比如:len_bytes("aa大a") 返回长度 5 用 (s.charCodeAt(i) & 0xff00)==0 来判断是不是单字节字符, 为什么不用前面有人说的小于127?big5码的话不一定是2个字节都大于127。