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 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
jquery 实现的全选和反选
Apr 15 Javascript
javascript定义函数的方法
Dec 06 Javascript
JS 面向对象之神奇的prototype
Feb 26 Javascript
在jquery中combobox多选的不兼容问题总结
Dec 24 Javascript
触屏中的JavaScript事件分析
Feb 06 Javascript
Vue.js学习之计算属性
Jan 22 Javascript
JavaScript之RegExp_动力节点Java学院整理
Jun 29 Javascript
vue实现组件之间传值功能示例
Jul 13 Javascript
微信小程序使用map组件实现路线规划功能示例
Jan 22 Javascript
使用vue实现HTML页面生成图片的方法
Mar 12 Javascript
使用js获取身份证年龄的示例代码
Dec 11 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使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
php实现的农历算法实例
2015/08/11 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
Vue v-text指令简单使用方法示例
2019/09/19 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
django的model操作汇整详解
2019/07/26 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
售后求职信范文
2014/03/15 职场文书
施工员岗位职责
2014/03/16 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
大学军训决心书
2015/02/05 职场文书
第一书记观后感
2015/06/08 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python