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进阶教程(第四课第一部分)
Apr 05 Javascript
javascript getElementsByClassName 和js取地址栏参数
Jan 02 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
Jquery 数组操作大全个人总结
Nov 13 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
form.submit()不能提交表单的原因分析
Oct 23 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
Nov 26 Javascript
详解JavaScript逻辑Not运算符
Dec 04 Javascript
用JS中split方法实现彩色文字背景效果实例
Aug 24 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
Dec 03 Javascript
js实现简易点击切换显示或隐藏
Nov 29 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
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
js面向对象 多种创建对象方法小结
2012/05/21 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
python语言使用技巧分享
2016/05/31 Python
python的re正则表达式实例代码
2018/01/24 Python
python视频按帧截取图片工具
2019/07/23 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
2020/10/15 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
给儿子的表扬信
2014/01/15 职场文书
幼儿园教师辞职信
2014/01/18 职场文书
运动会跳远广播稿
2014/02/04 职场文书
网络编辑职责
2014/03/01 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
党员创先争优公开承诺书
2014/03/28 职场文书
行风评议整改报告
2014/11/06 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
小学端午节活动总结
2015/02/11 职场文书
计算机专业自荐信
2015/03/05 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
思想工作总结范文
2015/08/12 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript