特殊字符简单编码

  1. 前端 js
    1. 编码 与 解码函数
      js对文字进行编码涉及3个函数:escape , encodeURI , encodeURIComponent,
                         相应3个解码函数:unescape, decodeURI, decodeURIComponent
      最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8 支持(form中的编码方式和当前页面编码方式相同)
    2. 调用方式
      escape(url) , encodeURI(url) , encodeURIComponent(url)
    3. 不编码字符
      • escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
      • encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
      • encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
  2. 后台 client
    1. encode() 与 decode()
      方法在编写 client 端时,同样需要对 中文、空格等特殊字符进行编码,确保传输过程中信息正确。
      使用方法 URLEncoder.encode()与 URLDecoder.decode()
    2. 使用方式
        // 对URL进行编码
      // 这里需要进行说明的点:在进行转义(编码)时,空格字符 " " 会转换为一个加号 “+”。在进行 解码时 ”+“ 不作处理。
      // 故需要 replaceAll() 方法,将 ”+“ 改为 空格的 ASCII码 %20。 String encodeData = "https://www.ceshi.com?cusname=" + URLEncoder.encode("张 三", "UTF-8").replaceAll("\\+", "%20"); // 结果为:https://www.ceshi.com?cusname=%E5%BC%A0%20%E4%B8%89 System.out.println(encodeData); // 对URL进行解码 String decodeData = URLDecoder.decode(encodeData, "UTF-8"); // 结果为:https://www.ceshi.com?cusname=张 三 System.out.println(decodeData);
    3. 不编码字符
      字母数字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不变。
      特殊字符 “.”、"-"、"*" 和 “_” 保持不变。
      注:
      所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 “%xy” 表示,其中 xy 为该字节的两位十六进制表示形式。
      推荐的编码机制是 UTF-8。但是,出于兼容性考虑,如果未指定一种编码,则使用相应平台的默认编码。

猜你喜欢

转载自www.cnblogs.com/zz-1q/p/10336329.html