利用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滑动门代码
Dec 19 Javascript
基于jquery的表头固定的若干方法
Jan 27 Javascript
浅析jquery的js图表组件highcharts
Mar 06 Javascript
Javascript中的异步编程规范Promises/A详细介绍
Jun 06 Javascript
Javascript实现Web颜色值转换
Feb 05 Javascript
基于jQuery实现选取月份插件附源码下载
Dec 28 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
深入探究angular2 UI组件之primeNG用法
Jul 26 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
Mar 21 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
May 09 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
Sep 11 Javascript
js中复选框的取值及赋值示例详解
Oct 18 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静态文件生成类实例分析
2015/01/03 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
Js apply方法详解
2017/02/16 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
2017/12/12 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
5分钟快速掌握JS中var、let和const的异同
2018/09/19 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
python之wxPython应用实例
2014/09/28 Python
Python标准库内置函数complex介绍
2014/11/25 Python
Python中使用HTMLParser解析html实例
2015/02/08 Python
Python3遍历目录树实现方法
2015/05/22 Python
Python单例模式的两种实现方法
2017/08/14 Python
Python zip()函数用法实例分析
2018/03/17 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Python实现ATM系统
2020/02/17 Python
python实现图像拼接功能
2020/03/23 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
格列佛游记读书笔记
2015/06/30 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
宣传委员竞选稿
2015/11/19 职场文书
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript