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 相关文章推荐
JS解密入门 最终变量劫持
Jun 25 Javascript
JS与框架页的操作代码
Jan 17 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
Jun 21 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
Dec 12 Javascript
js中小数转换整数的方法
Jan 26 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
Sep 09 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
Dec 14 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
Feb 05 Javascript
JavaScript获取select中text值的方法
Feb 13 Javascript
详解js根据百度地图提供经纬度计算两点距离
May 13 Javascript
javascript实现动态时钟的启动和停止
Jul 29 Javascript
详细介绍Next.js脚手架完整搭建封装
Apr 26 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设计模式小结
2013/02/15 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
php经典算法集锦
2015/11/14 PHP
php利用header函数下载各种文件
2016/08/24 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
js实现checkbox全选和反选示例
2014/05/01 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
javascript基本类型详解
2014/11/28 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
2014/06/09 Python
Python计算回文数的方法
2015/03/11 Python
python去掉行尾的换行符方法
2017/01/04 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
Python如何快速实现分布式任务
2017/07/06 Python
python 实现兔子生兔子示例
2019/11/21 Python
解决python replace函数替换无效问题
2020/01/18 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
游戏商店:Eneba
2020/04/25 全球购物
财务出纳岗位职责
2014/02/03 职场文书
升国旗演讲稿
2014/09/05 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
会计出纳岗位职责
2015/03/31 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python