JavaScript 获取字符串的字节长度

在utf-8中文输入时,一个字占用3个字节,但网上很多代码获取的是两个字节这是不准确的。

UCS-2编码(16进制) UTF-8 字节流(二进制)
0000 - 007F 0xxxxxxx (1字节)
0080 - 07FF 110xxxxx 10xxxxxx (2字节)
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx (3字节)

function mbStringLength(s) {
var totalLength = 0;
var i;
var charCode;
for (i = 0; i < s.length; i++) {
charCode = s.charCodeAt(i);
if (charCode < 0x007f) {
totalLength = totalLength + 1;
} else if ((0x0080 <= charCode) && (charCode <= 0x07ff)) {
totalLength += 2;
} else if ((0x0800 <= charCode) && (charCode <= 0xffff)) {
totalLength += 3;
}
}
//alert(totalLength);
return totalLength;
}
还有一种曲线救国方式!这种方式有点霸道,可能有误伤

var txt2="He中!!";
var t = txt2.replace(/[^\u0000-\u00ff]/g,"aaa").length;
代表吧中文字符替换成3个a然后合计字符个数


内容版权声明:除非注明,否则皆为本站原创文章。

评论