URL编码

URL为什么要编码

  • 在传输过程中,URL中有些字符会引起歧义,比如以下两种情况
  • URL查询字符的一般格式为key=value&key=value,那么如果value字符串中包含了=,&,那么就会造成解析错误
  • 或者URL的编码格式采用的是ASCII码,而你又在其中输入了中文,也可能会造成解析错误
  • 所以URL编码就是使用安全的字符去表示那些不安全的字符

JS中的3个编码函数详解

escape()

  • escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值
  • 不编码的符号有,ASCII字母、数字、标点符号"@ * _ + - . /"(*/@+-._0-9a-zA-Z
  • \u0000到\u00ff之间的符号被转成%xx的形式,其余符号被转成%uxxxx的形式
  • 对应的解码函数是unescape()

encodeURI()

  • encodeURI()是JS中用来对URL编码的函数,对常见符号进行编码
  • 不编码的符号是,一些在网址中有特殊含义的符号!#$&'()*+,/:;=?@-._~0-9a-zA-Z
  • 编码后,它输出符号的utf-8形式,并且在每个字节前加上%
  • 对应的解码函数是decodeURI()

encodeURIComponent()

  • encodeURIComponent():它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码
  • 因此在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码
  • 不编码的符号有,!'()*-._~0-9a-zA-Z
  • 对应的解码函数是decodeURIComponent()

你可能感兴趣的:(URL编码)