用JavaScript计算在UTF-8下存储字符串占用字节数

 更新时间:2013年08月08日 16:01:23   作者:  
想办法在JavaScript中判断在UTF-8下存储的String的字节数,在网上找到很多关于Unicode介绍的文档,最重要的是字符编码数值对应的存储长度
最近和JavaScript纠缠上了。

遇到这么一个问题,数据库的字符集为UTF-8的,要在页面上使用JavaScript验证输入的文本用UTF-8存储时占用字节长度。JavaScript的String对象有length属性,但是这个计算的是字符数,不是字节数(问题总是翻来覆去的,记得当年玩Delphi的时候,还得写程序计算字符串的字符数,因为Delphi中String的length是字节数...)。偷懒一点的办法是将验证代码中最大长度设置为数据库中对应字段的长度的1/3,但是这样准确来说有点不合适。

所以想办法在JavaScript中判断在UTF-8下存储的String的字节数,在网上找到很多关于Unicode介绍的文档,最重要的是字符编码数值对应的存储长度:

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;
}

实际上,0x0080到0x07ff之间的字符很少会在实际用户输入中用到。

相关文章

  • javascript 禁止复制网页

    javascript 禁止复制网页

    常见的一些禁止复制网页的代码,但破解方法也不见容易,这里就不说了,可以看本站以前发布的文章。
    2009-06-06
  • 浅谈JavaScript原型链

    浅谈JavaScript原型链

    这篇文章主要为大家详细介绍了JavaScript原型链,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2023-04-04
  • JavaScript数组,JSON对象实现动态添加、修改、删除功能示例

    JavaScript数组,JSON对象实现动态添加、修改、删除功能示例

    这篇文章主要介绍了JavaScript数组,JSON对象实现动态添加、修改、删除功能,结合实例形式分析了JavaScript针对json数组的添加、删除、修改操作实现技巧,需要的朋友可以参考下
    2018-05-05
  • 基于HTML+JS实现网页版苹果计算器

    基于HTML+JS实现网页版苹果计算器

    这篇文章主要为大家详细介绍了如何利用HTML+CSS+JS实现网页版的苹果计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Javascript中的String对象详谈

    Javascript中的String对象详谈

    这篇文章主要介绍了Javascript中的String对象,需要的朋友可以参考下
    2014-03-03
  • Javascript中的apply()方法浅析

    Javascript中的apply()方法浅析

    这篇文章主要介绍了Javascript中的apply()方法浅析,本文讲解了apply vs call、Javascript apply 方法等内容,需要的朋友可以参考下
    2015-03-03
  • jquery实现的图片点击滚动效果

    jquery实现的图片点击滚动效果

    这篇文章主要介绍了jquery实现的图片点击滚动效果,需要的朋友可以参考下
    2014-04-04
  • js实现禁止中文输入的方法

    js实现禁止中文输入的方法

    这篇文章主要介绍了js实现禁止中文输入的方法,需要的朋友可以参考下
    2015-01-01
  • 微信小程序分包操作实战指南

    微信小程序分包操作实战指南

    分包指的是把一个完整的小程序项目,按照需求划分为不同的子包, 在构建时打包成不同的分包,用户在使用时按需进行加载,下面这篇文章主要给大家介绍了关于微信小程序分包操作的相关资料,需要的朋友可以参考下
    2022-10-10
  • JavaScript中Window对象的属性及事件

    JavaScript中Window对象的属性及事件

    这篇文章主要介绍了JavaScript中Window对象的属性及事件 的相关资料,需要的朋友可以参考下
    2015-12-12

最新评论