字符集、编码、转码、转义

来源:互联网 发布:78团淘宝兼职是真的吗 编辑:程序博客网 时间:2024/05/29 07:11

字符 =》二进制

字符集:规定字符 和 对应的码点

Unicode 是一个字符集,需要四个字节才能表示完所有字符。Unicode的前127个码点 与 ASCII字符集相同

双字节码点范围 /[\u0100-\uffff]/

中文码点范围  /[\u4e00-\u9fa5]/


字符编码:将字符的码点编入字节

UTF-32编码采用Unicode字符集,用四个字节编码一个字符

UTF-8编码采用Unicode字符集,变长编码方式,码点小的字符用一个字节编码,码点大的字符用2-4个字节编码。


字符转码:用16进制数表示字符的码点或编码,两个16进制数对应一个字节(每4比特转成一个1-16的数字)

String.prototype.charCodeAr(index)、String.prototype.codePointAt(index): 获取字符Unicode码点(十进制)

escape:  获取Unicode码点,不转码范围{ ASCII字母 数字 @*/+ },用于字符串转码。unescape解码
encodeURI: 获取UTF-8编码,不转码范围{ ASCII字母 数字 ~!@#$&*()=:/,;?+' },用于URI转码。decodeURI解码

encodeURIComponent: 获取UTF-8编码,不转码范围 { ASCII字母 数字 ~!*()' },用于URI的组成部分转码,转码范围比encodeURI大一些。decodeURIComponent解码


二进制 =》字符


Base64编码:每6比特转成一个1-64的数字,再用这个数字在字母表(包含大小写字母数字+/)上找到一个字母
btoa: 对单字节字符进行Base64转码。atob解码


转义

"&单词;" 转成 "特殊字符",浏览器自动完成。浏览器没有自带的转义和反转义API

encodeHTML: function(a) {    return String(a).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");},decodeHTML: function(a) {    var b = String(a).replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&");    return b.replace(/&#([\d]+);/g, function(d, c) {        return String.fromCharCode(parseInt(c, 10))    })},

0 0
原创粉丝点击