利用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面向对象之定义成员方法实例分析
Jan 13 Javascript
学习JavaScript编程语言的8张思维导图分享
Mar 27 Javascript
javascript正则表达式定义(语法)总结
Jan 08 Javascript
JavaScript实现移动端轮播效果
Jun 06 Javascript
angular.js中解决跨域问题的三种方式
Jul 12 Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
Dec 13 Javascript
微信小程序结合mock.js实现后台模拟及调试
Mar 28 Javascript
Vue 权限控制的两种方法(路由验证)
Aug 16 Javascript
js实现鼠标拖拽div左右滑动
Jan 15 Javascript
编写一个javascript元循环求值器的方法
Apr 14 Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 Javascript
Vue组件间数据传递的方式(3种)
Jul 13 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
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
vue项目中使用vue-i18n报错的解决方法
2019/01/13 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
python列表与元组详解实例
2013/11/01 Python
python基础教程之基本内置数据类型介绍
2014/02/20 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
python和c语言的主要区别总结
2019/07/07 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
网页设计个人找工作求职信
2013/11/28 职场文书
施工单位安全责任书
2014/07/24 职场文书
创优争先心得体会
2014/09/11 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
工作服管理制度范本
2015/08/06 职场文书
检讨书格式
2019/04/25 职场文书
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android
python单向链表实例详解
2022/05/25 Python