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 相关文章推荐
解决jQuery插件tipswindown与hintbox冲突
Nov 05 Javascript
Javascript中对象继承的实现小例
May 12 Javascript
JavaScript中实现sprintf、printf函数
Jan 27 Javascript
jQuery复制表单元素附源码分享效果演示
Sep 30 Javascript
JS中artdialog弹出框控件之提交表单思路详解
Apr 18 Javascript
js学习笔记之事件处理模型
Oct 31 Javascript
Javascript中的async awai的用法
May 17 Javascript
vue cli2.0单页面title修改方法
Jun 07 Javascript
基于elementUI实现图片预览组件的示例代码
Mar 31 Javascript
swiper4实现移动端导航切换
Oct 16 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
JS Generator 函数的含义与用法实例总结
Apr 08 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 FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
jQuery源码分析之Event事件分析
2010/06/07 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
vue中轮训器的使用
2019/01/27 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
《青海高原一株柳》教学反思
2014/04/25 职场文书
模特大赛策划方案
2014/05/28 职场文书
农村门前三包责任书
2014/07/25 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
2014年协会工作总结
2014/11/22 职场文书
高三化学教学反思
2016/02/22 职场文书
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫