在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然后合计字符个数
评论