首页 > 代码库 > 编码小结

编码小结

一个汉字=两个字节(2B)
一个英文字母=一个字节(1B)
8bit(位)=1Byte(字节)
1024Byte(字节)=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
----------------------------------------

中英文字节长度转换
str.replace(/[^\x00-\xFF]/g, ‘**‘) 中文字符转换为两个英文
  • ^\x00-\xFF]表示匹配Ascii码大于255的那些字符了
  • 匹配双字节字符[X00-XFF],比如大写英文字母。加上^表示相反的意思,就是匹配非双字节的字符。小写字母和汉字都会被匹配出来。
  • [^X00-XFF]等同于[^\x00-\xff]

--------------------------------------------

 不超过12个汉字。支持中英文、数字、符号(不含空格)

  • 先用这个trim函数去空格-> \s指所有空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效

   (科普:\w匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效,是\S(所有非空白字符)的子集)

function trim(str) {    str = str.replace(/^\s+/, ‘‘);    for (var i = str.length - 1; i >= 0; i--) {        if (/\S/.test(str.charAt(i))) {               str = str.substring(0, i + 1);            break;        }    }    return str;}
  • 然后用var replacedStr = str.replace(/[^\x00-\xFF]/g, ‘**‘)把一个中文换成两个英文字符(即两个字节)
  • var patten = /^[\S]{1,24}$/; 匹配所有非空白字符的正则
  • patten.test(replacedStr);

编码解码

目的:好像是为了和后台传输的时候不出错。不同的浏览器对字符的解析不同?

 

encodeURIComponent(String)

对传递参数进行设置。不编码字符有 71 个: ! , ‘ , ( , ) , * , - , . , _ , ~ , 0-9 , a-z , A-Z 。

例:

var url = “<a href=http://www.mamicode.com/’http://cancait.blog.163.com/name=” + encodeURIComponent(“ 中国 ”) + “’>中国 </a>”;

 

encodeURI(String)

对 URL 整体转换。不编码字符有 82 个: ! , # , $ , & , ‘ , ( , ) , * , + ,,, - , . , / , : , ; , = , ? , @ , _ , ~ , 0-9 , a-z , A-Z 。

例:

var url = “<a href=http://www.mamicode.com/’” + encodeURI(“http://cancait.blog.163.com/name= 中国 ”) + “’> 中国 </a>”;

 

编码小结