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框架设计》

时间: 2024-11-05 21:58:11

javascript 计算字符串的字节长度的相关文章

javascript计算字符串的长度区分中英文

javascript计算字符串的长度区分中英文:计算字符串的长度是常有的操作,代码如下: var str="I love 蚂蚁部落"; console.log(str.length); 使用length计算字符串的长度,得出的结果是字符串中字符的个数,而在实际应用中可能需要计算字符串所占有的字节长度,一个汉字占两个字节,一个英文字符占一个字节,代码如下: var zfl={}; zfl.GetLength=function(str){ var realLength=0,len=str.

计算 num 的 n 次幂、n 的阶乘、斐波那契数列、字符串的字节长度、去除字符串中的重复字符

1 //计算 num 的 n 次幂 2 function numPow(num, n) { 3 if (n == 1) { 4 return num; 5 } 6 return num * numPow(num, n - 1); 7 } 8 9 //计算 n 的阶乘 10 function nFactorial(n) { 11 if (n == 1) { 12 return 1; 13 } 14 return n * nFactorial(n - 1); 15 } 16 17 //斐波那契数列,

求一个字符串的字节长度

编写一个方法 求一个字符串的字节长度 假设:一个英文字符占用一个字节,一个中文字符占用两个字节 function GetBytes(str){ var len = str.length; var bytes = len; for(var i=0; i<len; i++){ if (str.charCodeAt(i) > 255) bytes++; } return bytes; } alert(GetBytes("你好,as"));

[email&#160;protected]求一个字符串的字节长度

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>@求一个字符串的字节长度</title></head><body></body> <script> function GetBytes(str) { var len = str.length; var bytes

Javascript 计算字符串所占字节数

最近项目有个需求要用js计算一串字符串写入到localStorage里所占的内存,众所周知的,js是使用Unicode编码的.而Unicode的实现有N种,其中用的最多的就是UTF-8和UTF-16.因此本文只对这两种编码进行讨论. 下面这个定义摘自维基百科(http://zh.wikipedia.org/zh-cn/UTF-8),做了部分删减. UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,可以表示Unicode

js校验输入字符串的字节长度

//检查输入字符串字节长度 function fucCheckLength(strTemp) { var i,sum; sum=0; var length = strTemp.length ; for(i=0;i<length;i++) { if ((strTemp.charCodeAt(i)>=0) && (strTemp.charCodeAt(i)<=255)) { sum=sum+1; }else { sum=sum+2; } } return sum; } 使用:

js获取字符串的字节长度

占用3个字节的范围 U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个 U+2F00 - U+2FD5 : 0xE2 0xBC 0x80 - 0xE2 0xBF 0x95 共 213 个 U+3005 - U+3029 : 0xE3 0x80 0x85 - 0xE3 0x80 0xA9 共 36 个 U+3038 - U+4DB5 : 0xE3 0x80 0xB8 - 0xE4 0xB6 0xB5 共 7549 个 U+4E00 -

关于字符串的字节长度,不是字符长度。

string s = "张"; var ss = System.Text.Encoding.UTF8.GetBytes(s).Length;//UTF8编码格式 中文三个字节.英文字母或者数字或者特殊字符 占1个字节(全角输入法 占三个字节) var ss1 = System.Text.Encoding.UTF8.GetByteCount(s); var ss2 = System.Text.Encoding.GetEncoding("GB2312").GetByte

JavaScript计算字符串中包含几个给定字符

原文发布时间为:2009-05-04 -- 来源于本人的百度文章 [由搬家工具导入] 下面以 逗号 为例子: <html> <head><title>JavaScript计算字符串中包含几个给定字符</title></head><body> <script language="javascript"> function calculate() { //正则[^,]字符,是你需要统计的字符 documen