特殊字符简单编码

 

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值