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 相关文章推荐
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
Mar 09 Javascript
自动适应iframe右边的高度
Dec 22 Javascript
基于JavaScript实现的插入排序算法分析
Apr 14 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
Rollup处理并打包JS文件项目实例代码
May 31 Javascript
vue中设置height:100%无效的问题及解决方法
Jul 27 Javascript
layerUI下的绑定事件实例代码
Aug 17 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
Aug 25 Javascript
详解js加减乘除精确计算
Mar 19 Javascript
JavaScript实现拖拽盒子效果
Feb 06 Javascript
Element Backtop回到顶部的具体使用
Jul 27 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简单判断两个字符串是否相等的方法
2015/07/13 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
深入探讨javascript中的数据类型
2015/03/04 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
使用Python神器对付12306变态验证码
2016/01/05 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
Python实现简单登录验证
2016/04/13 Python
Python实现在线音乐播放器
2017/03/03 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
python3实现表白神器
2019/04/09 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
PHP如何自定义函数
2016/09/16 面试题
即兴演讲稿
2014/01/04 职场文书
庆元旦广播稿
2014/02/10 职场文书
环保建议书300字
2014/05/14 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
Python中requests做接口测试的方法
2021/05/30 Python
Nginx速查手册及常见问题
2022/04/07 Servers