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 相关文章推荐
脚本安需导入(装载)的三种模式的对比
Jun 24 Javascript
javascript preload&amp;lazy load
May 13 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
Apr 07 Javascript
js分页代码分享
Apr 28 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
Bootstrop实现多级下拉菜单功能
Nov 24 Javascript
JS实现简单抖动效果
Jun 01 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
Sep 17 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
小程序关于请求同步的总结
May 05 Javascript
vue.js中导出Excel表格的案例分析
Jun 11 Javascript
vue实现在进行增删改操作后刷新页面
Aug 05 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
DIY实用性框形天线
2021/03/02 无线电
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
Vue+element-ui 实现表格的分页功能示例
2018/08/18 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
怎么写好自荐信
2013/10/30 职场文书
大学生求职自荐信
2013/12/12 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
装修施工安全责任书
2014/07/24 职场文书
个人四风问题整改措施
2014/10/24 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
升学宴答谢词
2015/01/05 职场文书
工程资料员岗位职责
2015/04/13 职场文书