URL转义

时间:2024-05-20 16:02:14

前端通过访问某个接口地址与后端交互,前段时间忽然遇到个url中参数需要转义的,才发现这些知识没有很好的掌握,在这里记录一下

## 概念

对于任何一名编程初学者来说,了解计算机二进制数据转换为文本或者其它类型数据展示在我们面前的过程的简单原理都是必须的。

计算机中数据以类似001001001这样的二级制形式存在,通过不同的对照“翻译表”可以翻译成不同的文本,常见“翻译表”(即码表)就有ASCII 丶Unicode丶 UTF-8这些。

我们调用接口时使用的访问地址时如下图这样的.由于url中的字符只能时ASCII字符,而该字符集能表示的字符又比较少,而URL则常常包含ASCII字符集以外的字符,如非英语字符、汉字、特殊符号等等,所以要对URL进行转换。这个过程就叫做URL编码,或者叫URL转义,实质上就是将包含非ASCII字符的URL转换为有效的ASCII字符格式,这个接口,如果你使用这样的参数格式直接访问,后台会直接报错。不要与java中的转义搞混淆,java中是需要对特殊字符如 \进行转义标识,因为\本身是转义符的意思,你要让java识别这个是\符号而不是转义符,就需要对它进行转义操作,最后就是"\\"表示的是一个"\"字符串;或者双引号内部的引号,即字符串内部包含双引号也需要配转义"{\"name\":\"zhangsan\"}"

 

URL转义

 

##应用

说一下上面访问不成功的原因,可以看到tjMap和ids这两个参数都是带有特殊符号的,ASCII码无法正常表示。如果参数被正常识别,在后台,你调用ids的toString()方法会生成形如"['1290',‘2233’]"格式的字符串。

那么如何转义呢?

java后台中转义和后台接收操作如下,encode模拟的是转义后的url参数,decode是后台接收参数后进行解码生成的字符串

URL转义

 

postman中这样操作,点击后就能看到url被转换成可识别的ASCII字符

URL转义