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 的 trim 函数的代码
Aug 13 Javascript
Jquery作者John Resig自己封装的javascript 常用函数
Nov 09 Javascript
一些常用的JavaScript函数(json)附详细说明
May 25 Javascript
JS的replace方法介绍
Oct 20 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
Sep 04 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
Nov 03 Javascript
JS制作类似选项卡切换的年历
Dec 03 Javascript
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
简单的React SSR服务器渲染实现
Dec 11 Javascript
快速了解Node中的Stream流是什么
Feb 13 Javascript
JavaScript类型相关的常用操作总结
Feb 14 Javascript
通过JS运行机制的角度说说作用域
Mar 12 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&amp;&amp;mysql)五
2006/10/09 PHP
php多文件上传下载示例分享
2014/02/20 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
vue数据双向绑定原理解析(get &amp; set)
2017/03/08 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
Python采用raw_input读取输入值的方法
2014/08/18 Python
python实现梯度下降算法
2020/03/24 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
如何用Python 加密文件
2020/09/10 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
如何写一个自定义标签
2012/12/28 面试题
应用化学专业职业生涯规划书
2013/12/31 职场文书
2014年创卫实施方案
2014/02/18 职场文书
机电一体化求职信
2014/03/10 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python