利用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限定文本框只能输入数字即整数和小数
Nov 29 Javascript
js+div实现图片滚动效果代码
Feb 10 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
Jun 13 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 Javascript
分享我的jquery实现下拉菜单心的
Nov 29 Javascript
详解JavaScript基于面向对象之继承实例
Dec 16 Javascript
Bootstrap每天必学之响应式导航、轮播图
Apr 25 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
JavaScript和jQuery制作光棒效果
Feb 24 Javascript
Vue全局分页组件的实现代码
Aug 10 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
Aug 16 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
Sep 11 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
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
php实现Session存储到Redis
2015/11/11 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
jquery时间下拉框小例子
2013/04/15 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
Vue实现左右菜单联动实现代码
2018/08/12 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
如何在Node和浏览器控制台中打印彩色文字
2020/01/09 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
Python读写Excel文件的实例
2013/11/01 Python
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
python逆向入门教程
2018/01/15 Python
Python实现的生成格雷码功能示例
2018/01/24 Python
Python多继承顺序实例分析
2018/05/26 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
2020/03/23 Python
基于python代码批量处理图片resize
2020/06/04 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
综治宣传月活动总结
2014/04/28 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
课外活动总结
2015/02/04 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL