URI 上传中文符

除了以上字符,其他字符出现在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;
  }
    原文作者:木子喵
    原文地址: https://segmentfault.com/a/1190000017778208
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞