[转]使用javascript计算string的utf-8编码字节数

发布时间:2012-6-12 14:03
分类名称:Java


From:http://hi.baidu.com/zlflashlight/blog/item/d7330546b9fdf60f6a63e585.html

产品的需求是按照后台的存储字节来的,一个汉字3个字节,一个英文1个字节,一个越南文,最多可能是4个字节。但是前端页面,一个汉字记为1,一个越南字记为1,一个英文字符也是记为1,所以需要在JavaScript中判断在UTF-8下存储的String的字节数

编码格式为

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

代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
</body>
<script type="text/javascript">

String.prototype.length2 = function() {  
var totalLength = 0;
        var i;
        var charCode;
        for (i = 0; i < this.length; i++) {
          charCode = this.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 str = "jet' aime fairy";  
alert(str) ;
alert("字符数:"+str.length);  
alert("byte数:"+str.length2());  
</script>
</html>

紫色的部分可以任意修改为各个国家的文字