利用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 相关文章推荐
准确获得页面、窗口高度及宽度的JS
Nov 26 Javascript
Mootools 1.2教程 滚动条(Slider)
Sep 15 Javascript
JQuery 返回布尔值Is()条件判断方法代码
May 14 Javascript
简介JavaScript中valueOf()方法的使用
Jun 05 Javascript
jQuery实现的左右移动焦点图效果
Jan 14 Javascript
jQuery实现返回顶部功能
Feb 23 Javascript
对javascript继承的理解
Oct 11 Javascript
Angularjs中使用layDate日期控件示例
Jan 11 Javascript
ES6新特性六:promise对象实例详解
Apr 21 Javascript
Vue2路由动画效果的实现代码
Jul 10 Javascript
JS中Map和ForEach的区别
Feb 05 Javascript
详解JQuery基础动画操作
Apr 12 jQuery
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自动选择 连接本地还是远程数据库
2010/12/02 PHP
php实现的简单检验登陆类
2015/06/18 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
Bootstrap每天必学之js插件
2015/11/30 Javascript
理解javascript正则表达式
2016/03/08 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
宿舍违规检讨书
2014/01/12 职场文书
高中教师评语大全
2014/04/25 职场文书
节约用水演讲稿
2014/05/21 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
主婚人致辞精选
2015/07/28 职场文书
新员工入职感想
2015/08/07 职场文书
股东协议书范本2016
2016/03/21 职场文书
golang 实现并发求和
2021/05/08 Golang
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers