在javascript中,一个字母和数字占一个字节,中文占两个字节。可以测试一下:
console.log('abcd1234'.length);//8 console.log('我的博客'.length);//4
因此,假如要计算一个字符串的字节长度,就要区分是否是中文。
我想到的有两种方法:
1、将中文用两个英文字符替换,比如用"**"替换,然后计算str.lenght;
2、除了中文,其它字符,比如字母,数字,符号等都是属于ascii码,
所以charCode应该在0-255之间,如果大于255,那么str.length++即可。
代码实现如下:
//方法一 function getBytes(str){ str = str.replace(/[^\x00-\xff]/g, '**');//将非ascii码转换为2个ascii码 return str.length; }
方法二:
function getBytes(str){ var bytes= str.length; for(var i = bytes; i--;){ if(str.charCodeAt(i) > 255){ bytes++; } } return bytes; }