- 前端 js
- 编码 与 解码函数
js对文字进行编码涉及3个函数:escape , encodeURI , encodeURIComponent,
相应3个解码函数:unescape, decodeURI, decodeURIComponent
最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8 支持(form中的编码方式和当前页面编码方式相同) - 调用方式
escape(url) , encodeURI(url) , encodeURIComponent(url) - 不编码字符
-
- escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
- encodeURI不编码字符有82个:!,#,$,&,‘,(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
- encodeURIComponent不编码字符有71个:!, ‘,(,),*,-,.,_,~,0-9,a-z,A-Z
- 编码 与 解码函数
- 后台 client
- encode() 与 decode()
方法在编写 client 端时,同样需要对 中文、空格等特殊字符进行编码,确保传输过程中信息正确。
使用方法 URLEncoder.encode()与 URLDecoder.decode() - 使用方式
// 对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);
- 不编码字符
字母数字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不变。
特殊字符 “.”、"-"、"*" 和 “_” 保持不变。
注:
所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 “%xy” 表示,其中 xy 为该字节的两位十六进制表示形式。
推荐的编码机制是 UTF-8。但是,出于兼容性考虑,如果未指定一种编码,则使用相应平台的默认编码。
- encode() 与 decode()
原文地址:https://www.cnblogs.com/zz-1q/p/10336329.html
时间: 2024-10-19 23:06:38