利用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 相关文章推荐
jQuery阻止同类型事件小结
Apr 19 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
Jun 06 Javascript
JavaScript按值删除数组元素的方法
Apr 24 Javascript
JavaScript实现自动消除按钮功能的方法
Aug 05 Javascript
Bootstrap每天必学之标签页(Tab)插件
Aug 09 Javascript
JavaScript代码性能优化总结(推荐)
May 16 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
Sep 23 Javascript
JS控制FileUpload的上传文件类型实例代码
Oct 07 Javascript
Javascript实现页面滚动时导航智能定位
May 06 Javascript
Mac系统下Webstorm快捷键整理大全
May 28 Javascript
详解vue渲染函数render的使用
Dec 12 Javascript
JS实现灯泡开关特效
Mar 30 Javascript
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
如何做到多笔资料的同步
2006/10/09 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
TBCompressor js代码压缩
2011/01/05 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
[48:26]VGJ.S vs infamous Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
python3访问sina首页中文的处理方法
2014/02/24 Python
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
python中对数据进行各种排序的方法
2019/07/02 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
创业计划书中要认真思考的问题
2013/12/28 职场文书
爱护公共设施标语
2014/06/24 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
学校交通安全责任书
2014/08/25 职场文书
2014年药店工作总结
2014/11/20 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
日本十大血腥动漫,那些被禁播的动漫盘点
2022/03/21 日漫
什么是SOLID
2022/03/24 Javascript
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS
nginx访问报403错误的几种情况详解
2022/07/23 Servers