特殊字符简单编码

1. 前端 js

1.1编码 与 解码函数

js对文字进行编码涉及3个函数:escape , encodeURI , encodeURIComponent,
                   相应3个解码函数:unescape, decodeURI, decodeURIComponent
最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8 支持(form中的编码方式和当前页面编码方式相同)

1.2 调用方式

escape(url) , encodeURI(url) , encodeURIComponent(url)

1.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

2.1 encode() 与 decode()

方法在编写 client 端时,同样需要对 中文、空格等特殊字符进行编码,确保传输过程中信息正确。
使用方法 URLEncoder.encode()与 URLDecoder.decode()

2.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);

2.3 不编码字符

字母数字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不变。
特殊字符 “.”、"-"、"*" 和 “_” 保持不变。
注:

  • 所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 “%xy” 表示,其中 xy 为该字节的两位十六进制表示形式。
  • 推荐的编码机制是 UTF-8。但是,出于兼容性考虑,如果未指定一种编码,则使用相应平台的默认编码。
原文地址:https://www.cnblogs.com/zz-1q/p/10336329.html