JavaScript实现的GBK、UTF8字符串实际长度计算函数


Posted in Javascript onAugust 27, 2014

大家都知道,在JS中字符串的长度不分中英文字符, 每一个字符都算一个长度,这跟PHP里的strlen()函数就不太一样。PHP里的strlen()函数根据字符集把GBK的中文每个2累加,把UTF-8的中文字符每个按3累加。

有些童鞋可能要问了,为什么要计算实际长度?

主要是为了匹配数据库的长度范围内,比如GBK的数据库某字段是varchar(10),那么就相当于5个汉字长度,一个汉字等于两个字母长度。如果是UTF8的数据库则是每个汉字长度为3。

知道了以上原理以后,我们就可以算出一个字符串的实际长度了,如果是GBK字符集遇到中文加2,如果是UTF8字符集遇到中文加3即可
GBK长度计算函数:

// GBK字符集实际长度计算

function getStrLeng(str){

    var realLength = 0;

    var len = str.length;

    var charCode = -1;

    for(var i = 0; i < len; i++){

        charCode = str.charCodeAt(i);

        if (charCode >= 0 && charCode <= 128) { 

            realLength += 1;

        }else{ 

            // 如果是中文则长度加2

            realLength += 2;

        }

    } 

    return realLength;

}

UTF8长度计算函数:
// UTF8字符集实际长度计算

function getStrLeng(str){

    var realLength = 0;

    var len = str.length;

    var charCode = -1;

    for(var i = 0; i < len; i++){

        charCode = str.charCodeAt(i);

        if (charCode >= 0 && charCode <= 128) { 

            realLength += 1;

        }else{ 

            // 如果是中文则长度加3

            realLength += 3;

        }

    } 

    return realLength;

}
Javascript 相关文章推荐
Javascript的IE和Firefox兼容性汇编
Jul 01 Javascript
ext for eclipse插件安装方法
Apr 27 Javascript
js中更短的 Array 类型转换
Oct 30 Javascript
jQuery动态添加删除select项(实现代码)
Sep 03 Javascript
js复制网页内容并兼容各主流浏览器的代码
Dec 17 Javascript
js中的setInterval和setTimeout使用实例
May 09 Javascript
jQuery 常用代码集锦(必看篇)
May 16 Javascript
微信小程序tabbar不显示解决办法
Jun 08 Javascript
删除table表格行的实例讲解
Sep 21 Javascript
解决npm管理员身份install时出现权限的问题
Mar 16 Javascript
深入浅析Node环境和浏览器的区别
Aug 14 Javascript
vue通过style或者class改变样式的实例代码
Oct 30 Javascript
JavaScript实现的使用键盘控制人物走动实例
Aug 27 #Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 #Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
Aug 27 #Javascript
jQuery中的read和JavaScript中的onload函数的区别
Aug 27 #Javascript
javascript实现的一个随机点名功能
Aug 26 #Javascript
JS按回车键实现登录的方法
Aug 25 #Javascript
在JavaScript中重写jQuery对象的方法实例教程
Aug 25 #Javascript
You might like
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
Javascript实现字数统计
2015/07/03 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
python flask实现分页的示例代码
2018/08/02 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
详解Python 解压缩文件
2019/04/09 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
python3.4中清屏的处理方法
2020/07/06 Python
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
应届毕业生应聘自荐信范文
2014/02/26 职场文书
给校长的建议书作文400字
2015/09/14 职场文书
详解Python为什么不用设计模式
2021/06/24 Python
分析Python list操作为什么会错误
2021/11/17 Python
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers