除了以上字符,其他字符出现在URL当中都必须转义,规则是依据操作系统的默许编码,将每一个字节转为百分号(%)加上两个大写的十六进制字母。比方,UTF-8的操作系统上,http://www.example.com/q=春节…,汉字“春节”不是URL的正当字符,所以被浏览器自动转成http://www.example.com/q=%E6%…。
个中,“春”转成了%E6%98%A5,“节”转成了%E8%8A%82。这是由于“春”和”节“的UTF-8编码分别是E6 98 A5和E8 8A 82,将每一个字节前面加上百分号,就构成了URL编码。
encodeURI 要领的参数是一个字符串,代表全部URL。它会将元字符和语义字符以外的字符,都举行转义。encodeURIComponent只转除了语义字符以外的字符,元字符也会被转义。因而,它的参数通常是URL的途径或参数值,而不是全部URL。
decodeURI用于复原转义后的URL。它是encodeURI要领的逆运算。decodeURIComponent用于复原转义后的URL片断。它是encodeURIComponent要领的逆运算。
在浏览器地点栏里,浏览器以为%是个转义字符,浏览器会把%与%之间的编码,两位两位掏出后举行解码,然后再传递给后端,然后由后端举行再次解码。
假如运用encodeURI()举行了一遍编码,传过去后,发明解码出现问题,须要运用两次encodeURI要领,比方encodeURI(encodeURI(“中文”));第一次是把中文编码成%xy的花样,第二次是对%xy中的%举行编码%编码成%25。
[援用地点](https://segmentfault.com/a/11…
HTMLDecode(text) { /*转义 <p><b>123&456<*/
var temp = document.createElement("div");
temp.innerHTML = text;
var output = temp.innerText || temp.textContent;
temp = null;
return output;
}
HTMLEncode(html) { /**反转义 */
var temp = document.createElement("div");
(temp.textContent != null) ? (temp.textContent = html) : (temp.innerText = html);
var output = temp.innerHTML;
temp = null;
return output;
}