利用JS如何计算字符串所占字节数示例代码


Posted in Javascript onSeptember 13, 2017

前言

在工作中是不是经常会遇到字符串,但是要求控制字节数的需求?因为很多时候数据库中对字节数有控制,所以在前端过程中就需要判断一下,今天我们来分享一下。

本文主要给大家介绍了关于JS计算字符串所占字节数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

示例代码

/**
 * 计算字符串所占的内存字节数,默认使用UTF-8的编码方式计算,也可制定为UTF-16
 * UTF-8 是一种可变长度的 Unicode 编码格式,使用一至四个字节为每个字符编码
 * 
 * 000000 - 00007F(128个代码)  0zzzzzzz(00-7F)        一个字节
 * 000080 - 0007FF(1920个代码)  110yyyyy(C0-DF) 10zzzzzz(80-BF)    两个字节
 * 000800 - 00D7FF 
 00E000 - 00FFFF(61440个代码) 1110xxxx(E0-EF) 10yyyyyy 10zzzzzz   三个字节
 * 010000 - 10FFFF(1048576个代码) 11110www(F0-F7) 10xxxxxx 10yyyyyy 10zzzzzz 四个字节
 * 
 * 注: Unicode在范围 D800-DFFF 中不存在任何字符
 * {@link http://zh.wikipedia.org/wiki/UTF-8}
 * 
 * UTF-16 大部分使用两个字节编码,编码超出 65535 的使用四个字节
 * 000000 - 00FFFF 两个字节
 * 010000 - 10FFFF 四个字节
 * 
 * {@link http://zh.wikipedia.org/wiki/UTF-16}
 * @param {String} str 
 * @param {String} charset utf-8, utf-16
 * @return {Number}
 */
  
 var sizeof = function(str, charset){
  var total = 0,
   charCode,
   i,
   len;
  charset = charset ? charset.toLowerCase() : '';
  if(charset === 'utf-16' || charset === 'utf16'){
   for(i = 0, len = str.length; i < len; i++){
    charCode = str.charCodeAt(i);
    if(charCode <= 0xffff){
     total += 2;
    }else{
     total += 4;
    }
   }
  }else{
   for(i = 0, len = str.length; i < len; i++){
    charCode = str.charCodeAt(i);
    if(charCode <= 0x007f) {
     total += 1;
    }else if(charCode <= 0x07ff){
     total += 2;
    }else if(charCode <= 0xffff){
     total += 3;
    }else{
     total += 4;
    }
   }
  }
  return total;
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript dom 操作详解 js加强
Jul 13 Javascript
json对象转字符串如何实现
Dec 02 Javascript
浅谈jQuery中setInterval()方法
Jul 07 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
Nov 03 Javascript
JavaScript实现图片滑动切换的代码示例分享
Mar 06 Javascript
使用Angular.js实现简单的购物车功能
Nov 21 Javascript
详解JavaScript中数组的reduce方法
Dec 02 Javascript
javascript自执行函数
Feb 10 Javascript
js实现功能比较全面的全选和多选
Mar 02 Javascript
angularJS的radio实现单项二选一的使用方法
Feb 28 Javascript
webpack分离css单独打包的方法
Jun 12 Javascript
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
Apr 11 Vue.js
VUE实现一个分页组件的示例
Sep 13 #Javascript
jquery 键盘事件的使用方法详解
Sep 13 #jQuery
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 #Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
Sep 13 #Javascript
Js利用Canvas实现图片压缩功能
Sep 13 #Javascript
js 倒计时(高效率服务器时间同步)
Sep 12 #Javascript
js Date()日期函数浏览器兼容问题解决方法
Sep 12 #Javascript
You might like
PHP自动生成表单代码分享
2015/06/19 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
jquery 查找新建元素代码
2010/07/06 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
js删除数组元素、清空数组的简单方法(必看)
2016/07/27 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
Python字符串逐字符或逐词反转方法
2015/05/21 Python
Python 错误和异常代码详解
2018/01/29 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
django下创建多个app并设置urls方法
2020/08/02 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
Nike荷兰官方网站:Nike.com (NL)
2018/04/19 全球购物
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
毕业生自荐书模版
2014/01/04 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
婚礼父母答谢词
2015/01/04 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
债务纠纷代理词
2015/05/25 职场文书