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 相关文章推荐
Array.prototype 的泛型应用分析
Apr 30 Javascript
IE的fireEvent方法概述及应用
Feb 22 Javascript
struts2+jquery+json实现异步加载数据(自写)
Jun 24 Javascript
jQuery中closest()函数用法实例
Jan 07 Javascript
Javascript基础教程之定义和调用函数
Jan 18 Javascript
JS动态添加Table的TR,TD实现方法
Jan 28 Javascript
javascript绘制漂亮的心型线效果完整实例
Feb 02 Javascript
jQuery插件 Jqplot图表实例
Jun 18 Javascript
学好js,这些js函数概念一定要知道【推荐】
Jan 19 Javascript
关于js中的鼠标事件总结
Jul 11 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
Mar 16 Javascript
JavaScript实现表单验证功能
Dec 09 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获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
PHP实现简单日历类编写
2020/08/28 PHP
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
基于javascript实现按圆形排列DIV元素(一)
2016/12/02 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python中的self用法详解
2019/08/06 Python
python实现简单井字棋小游戏
2020/03/05 Python
python变量的作用域是什么
2020/05/26 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
《埃及的金字塔》教学反思
2014/04/07 职场文书
物理教育专业求职信
2014/06/25 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
2014年教研员工作总结
2014/12/23 职场文书
解约证明模板
2015/06/19 职场文书
2015年国培研修感言
2015/08/01 职场文书