zoukankan      html  css  js  c++  java
  • js获取字符串的字节长度

    占用3个字节的范围
    U+2E80 - U+2EF3 : 0xE2 0xBA 0x80 - 0xE2 0xBB 0xB3 共 115 个
    U+2F00 - U+2FD5 : 0xE2 0xBC 0x80 - 0xE2 0xBF 0x95 共 213 个
    U+3005 - U+3029 : 0xE3 0x80 0x85 - 0xE3 0x80 0xA9 共 36 个
    U+3038 - U+4DB5 : 0xE3 0x80 0xB8 - 0xE4 0xB6 0xB5 共 7549 个
    U+4E00 - U+FA6A : 0xE4 0xB8 0x80 - 0xEF 0xA9 0xAA 共 44138 个
    U+FA70 - U+FAD9 : 0xEF 0xA9 0xB0 - 0xEF 0xAB 0x99 共 105 个

    合计: 52156

    占用4个字节的范围

    U+20000 - U+2FA1D : 0xF0 0xA0 0x80 0x80 - 0xF0 0xAF 0xA8 0x9D 共 64029 个

    合计: 64029

    所以,我认为答案应该是:3个或4个字节

     方法一:循环遍历

    参考:http://www.cnblogs.com/sniper007/p/3309787.html

     1 //字符编码数值对应的存储长度:     
     2 //UCS-2编码(16进制) UTF-8 字节流(二进制)    
     3 //0000 - 007F       0xxxxxxx (1字节)     
     4 //0080 - 07FF       110xxxxx 10xxxxxx (2字节)     
     5 //0800 - FFFF       1110xxxx 10xxxxxx 10xxxxxx (3字节)    
     6 String.prototype.getBytesLength = function() {   
     7     var totalLength = 0;     
     8     var charCode;  
     9     for (var i = 0; i < this.length; i++) {  
    10         charCode = this.charCodeAt(i);  
    11         if (charCode < 0x007f)  {     
    12             totalLength++;     
    13         } else if ((0x0080 <= charCode) && (charCode <= 0x07ff))  {     
    14             totalLength += 2;     
    15         } else if ((0x0800 <= charCode) && (charCode <= 0xffff))  {     
    16             totalLength += 3;   
    17         } else{  
    18             totalLength += 4;   
    19         }          
    20     }  
    21     return totalLength;   
    22 }  
    23 var str="你好吗?111?";  
    24 alert("字符数"+str.length+" ,字节数"+str.getBytesLength());    
    25 //Java中的字节数==="字符串".getBytes("UTF-8").length   
    26   //-->  

     方法二:使用正则表达式

      待整理

     

  • 相关阅读:
    redis基础
    docker日志清理脚本
    Hive修改表的所有者(Owner)
    User xxx does not have privileges for CREATETABLE的解决办法
    Spark读取Hive表中文显示乱码的解决办法
    Go语言之标识符与关键字
    Go语言之数据类型(三)
    bootstrapTable频繁向后台接口发请求
    框架整合疑云
    业务开发中-设计模式使用
  • 原文地址:https://www.cnblogs.com/yingsong/p/5819311.html
Copyright © 2011-2022 走看看