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 乱码问题
Aug 06 Javascript
JavaScript日历实现代码
Sep 12 Javascript
扩展easyui.datagrid,添加数据loading遮罩效果代码
Nov 02 Javascript
JQuery each()嵌套使用小结
Apr 18 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
Aug 26 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
React.Js添加与删除onScroll事件的方法详解
Nov 03 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
Apr 17 Javascript
javascript实现前端成语点击验证
Jun 24 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
Aug 26 Javascript
5个实用的JavaScript新特性
Jun 16 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
人族 Terran 魔法与科技
2020/03/14 星际争霸
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
jQuery validate 中文API 附validate.js中文api手册
2010/07/31 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
python+pyqt实现12306图片验证效果
2017/10/25 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
python修改FTP服务器上的文件名
2019/09/11 Python
python 伯努利分布详解
2020/02/25 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
绩效工资分配方案
2014/01/18 职场文书
餐饮营销方案
2014/02/23 职场文书
财务总监管理职责范文
2014/03/09 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
奖金申请报告模板
2015/05/15 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技