验证表单长度时 .length 汉字和英文字符 一样。。应该怎么区分。

 我来答
网海1书生
科技发烧友

2012-09-09 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
首先你要知道,.length得到的是字符长度,不是字节长度,一个汉字和一个英文字符都是算一个字符的;
其次,在不同编码格式的网页中,汉字占用的字节是不同的,比如在GB2312中汉字是2个字节,而在UTF-8编码格式中汉字可以是2个字节,也可能是3个字节,甚至在iso-8859-1编码中汉字是5个字节的!
所以要根据不同的编码来计算:

比如在GB2312中:
function getByteForGB(s)
{
return s.replace(/[^\u0000-\u007f]/g, "\u0061\u0061").length;
}

在UTF-8中:
function getByteForUTF(s)
{
a=s.replace(/[\u0000-\u007f]/g, "\u0061");
b=a.replace(/[\u0080-\u07ff]/g, "\u0061\u0061");
c=b.replace(/[\u0800-\uffff]/g, "\u0061\u0061\u0061");
return c.length;
}
追问
...function部分看不懂啊。。。能否解释一下
追答
就是把汉字用同等字节的字符a替换,这样得出的length就是实际字节数了
比如
百度baidu(length为7)
转换为
aaaabaidu(length为9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式