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 面向对象全新理练之原型继承
Dec 03 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
JavaScript实现函数返回多个值的方法
Jun 09 Javascript
js实现表单多按钮提交action的处理方法
Oct 24 Javascript
如何使用Vuex+Vue.js构建单页应用
Oct 27 Javascript
JS实现读取xml内容并输出到div中的方法示例
Apr 19 Javascript
微信小程序中换行空格(多个空格)写法详解
Jul 10 Javascript
JavaScript实现的反序列化json字符串操作示例
Jul 18 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
Aug 29 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
12个提高JavaScript技能的概念(小结)
May 09 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 获取mysql数据库信息代码
2009/03/12 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
php可变长参数处理函数详解
2017/02/22 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
Python解析nginx日志文件
2015/05/11 Python
Python选课系统开发程序
2016/09/02 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
python dict 相同key 合并value的实例
2019/01/21 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
Python日志syslog使用原理详解
2020/02/18 Python
django API 中接口的互相调用实例
2020/04/01 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
全球工业:Global Industrial
2020/02/01 全球购物
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
pandas提升计算效率的一些方法汇总
2021/05/30 Python
python创建字典及相关管理操作
2022/04/13 Python
Go语言编译原理之源码调试
2022/08/05 Golang