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对象和属性的创建方法
Jan 15 Javascript
用js实现控制内容的向上向下滚动效果
Jun 26 Javascript
javascript encodeURI和encodeURIComponent的比较
Apr 03 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
Apr 27 Javascript
JavaScript几种形式的树结构菜单
May 10 Javascript
JavaScript高级程序设计 客户端存储学习笔记
Sep 10 Javascript
JavaScript面向对象编程入门教程
Apr 16 Javascript
AngularJS手动表单验证
Feb 01 Javascript
jquery文字填写自动高度的实现方法
Nov 07 Javascript
SelecT下拉框选中和取值的解决方法
Nov 22 Javascript
Angular2使用jQuery的方法教程
May 28 jQuery
vue判断input输入内容全是空格的方法
Mar 02 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
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
PHP 和 MySQL 基础教程(四)
2006/10/09 PHP
推荐文章系统(一)
2006/10/09 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
jQuery源码分析之jQuery中的循环技巧详解
2014/09/06 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
js格式化时间的方法
2015/12/18 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
Python缓存技术实现过程详解
2019/09/25 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
Python序列类型的打包和解包实例
2019/12/21 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
小学老师对学生的评语
2014/12/29 职场文书
鼋头渚导游词
2015/02/05 职场文书
小学班主任个人总结
2015/03/03 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL