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 相关文章推荐
jquery select(列表)的操作(取值/赋值)
Aug 06 Javascript
jQuery代码优化 事件委托篇
Nov 01 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
Apr 25 Javascript
使用canvas实现仿新浪微博头像截取上传功能
Sep 02 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
Nov 04 Javascript
js获取元素的外链样式的简单实现方法
Jun 06 Javascript
详解Angular 开发环境搭建
Jun 22 Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
Oct 06 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
Jun 10 Javascript
JS开发自己的类库实例分析
Aug 28 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
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
一个简洁的多级别论坛
2006/10/09 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
Javascript执行效率全面总结
2013/11/04 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
python根据京东商品url获取产品价格
2015/08/09 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
荷兰本土平价百货:HEMA
2017/10/23 全球购物
MCAKE蛋糕官方网站:一直都是巴黎的味道
2018/02/06 全球购物
物业管理专业个人的自我评价
2013/11/19 职场文书
医务工作者先进事迹材料
2014/01/26 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
承诺书格式范文
2014/06/03 职场文书
放假通知范文
2015/04/14 职场文书
Python制作表白爱心合集
2022/01/22 Python
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL