利用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插件Tabs实现过程
Jul 06 Javascript
jQuery在iframe中无法弹出对话框的解决方法
Jan 12 Javascript
JQuery调用WebServices的方法和4个实例
May 06 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
Bootstrap每天必学之下拉菜单
Nov 25 Javascript
微信小程序 UI布局常用技巧整理总结
Dec 05 Javascript
微信小程序五星评分效果实现代码
Apr 06 Javascript
js阻止默认右键的下拉菜单方法
Jan 02 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
vue scroller返回页面记住滚动位置的实例代码
Jan 29 Javascript
JS实现可针对算术表达式求值的计算器功能示例
Sep 04 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
May 28 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中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
十大使用PHP框架的理由
2015/09/26 PHP
php测试kafka项目示例
2020/02/06 PHP
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
python删除过期文件的方法
2015/05/29 Python
Django框架自定义session处理操作示例
2019/05/27 Python
python 中xpath爬虫实例详解
2019/08/26 Python
django 简单实现登录验证给你
2019/11/06 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
国贸专业个人求职信范文
2014/01/08 职场文书
微信早安问候语
2015/11/10 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书