首页 > 代码库 > javascript 计算字符串的字节长度
javascript 计算字符串的字节长度
在做前端验证表单时,有时候要检测一个字符串的字节长度,保证其字节长度不超过数据库表中对应字段允许的最大长度。
不废话,上方法
1.我们通常遇到的情况都是中文+英文,所以可以判断每个字符的 Unicode 编码值,大于255,表示中文,字节应该比英文大1个字节:
1 function byteLength(str){2 var byteLen = str.length, len = str.length, i;3 for(i = 0;i<len;i++){4 if(str.charCodeAt(i) > 255){5 byteLen++;6 }7 }8 return byteLen;9 }
要注意的是,中文字符对应的字节数可能会因使用的字符编码不同而不同。
2.解决不同编码,中文字符对应字节数不同的问题,主要是针对utf-16:
1 //utf-8 是可变长度的 Unicode 编码格式,每个字符对应1~4个字节 2 //utf-16大部分使用两个字节编码,编码超出65535(00ffff)的使用4个字节 3 function byteLength(str, charset){ 4 var total = 0, 5 charcode, 6 i, 7 len = str.length, 8 byteLen, 9 charset = charset ? charset.toLowerCase() : ‘‘;10 if(charset === ‘utf16‘ || charset === ‘utf-16‘){11 for(i = 0;i<len;i++){12 if(str.charCodeAt(i) <= 0xffff){13 byteLen += 2;14 }else{15 byteLen += 4;16 }17 }18 }else{19 for(i = 0;i<len;i++){20 if(str.charCodeAt(i) <= 0x007f){21 byteLen += 1;22 }else if(str.charCodeAt(i) <= 0x07ff){23 byteLen += 2;24 }else if(str.charCodeAt(i) <= 0xffff){25 byteLen += 3;26 }else{27 byteLen += 4;28 }29 }30 }31 return byteLen;32 }
参考《javascript框架设计》
javascript 计算字符串的字节长度
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。