利用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 相关文章推荐
COM中获取JavaScript数组大小的代码
Nov 22 Javascript
JS 跳转页面延迟2种方法
Mar 29 Javascript
js实现全屏漂浮广告移入光标停止移动
Dec 02 Javascript
js 立即调用的函数表达式如何写
Jan 12 Javascript
在JS中解析HTML字符串示例代码
Apr 16 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
json字符串之间的相互转换示例代码
Aug 21 Javascript
vue组件父子间通信详解(三)
Nov 07 Javascript
elementui的默认样式修改方法
Feb 23 Javascript
vue项目打包上传github并制作预览链接(pages)
Apr 19 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
May 22 Javascript
vue-router的hooks用法详解
Jun 08 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中利用XML技术构造远程服务(上)
2006/10/09 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
php中filter_input函数用法分析
2014/11/15 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
Dom与浏览器兼容性说明
2010/10/25 Javascript
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
jquery插件格式实例分析
2016/06/16 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
微信小程序自定义模态对话框实例详解
2017/08/16 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
ES6 Class中实现私有属性的一些方法总结
2019/07/08 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
python中随机函数random用法实例
2015/04/30 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
python实现加密的方式总结
2020/01/19 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
Python 实现微信自动回复的方法
2020/09/11 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
领导检查欢迎词
2014/01/14 职场文书
电工工作职责范本
2014/02/22 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
2014年度个人工作总结
2014/11/07 职场文书
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS