http://127.0.0.1:2020/cs?&b=222&c=%99
请求参数是这样, 收到后在 golang 里面打印出来是
/cs?a=101&b=222&c=%EF%BF%BD
url 编码也不是很对, %的 url 编码应该是%25
, 然后导致解析c
的值变成了乱码
我现在想把%
当成普通字符串处理, 我要怎么做, gin 和 beego 都存在这样的问题
1
jxxz 2022-04-06 18:06:53 +08:00
请求的时候%手动编码掉
http://127.0.0.1:2020/cs?&b=222&c=%2599 |
3
jxxz 2022-04-06 18:16:12 +08:00
出现这种问题的原因就是客户端没有做一次编码,导致后端拿到%99 的值被认为是编码后的值
uelencode 这种数据格式就是要求客户端一次编码 服务端一次解码,改框架不知道怎么改,除非你原生地取出 http 中的 body 自己解析 |
4
janxin 2022-04-06 18:26:34 +08:00
标准库的就是这么按照标准处理的,跟框架没什么关系,除非不用标准库实现。
当然确实可以不用。你如果真的有需求,可以使用 RawQuery 获取原始字符串,自己手工处理一下就好。 |
5
xpyusrs OP RawQuery 怎么用才能获取原始字符串, 用的 beego 里面带的是处理后的, 能否贴一部分代码我试一下
|
6
xpyusrs OP @janxin RawQuery 怎么用才能获取原始字符串, 用的 beego 里面带的是处理后的, 能否贴一部分代码我试一下
|
7
dcalsky 2022-04-06 18:59:05 +08:00
gin 里没这个问题啊,你成功浪费了我 5 分钟。encoded query: c=%99
|
9
GeruzoniAnsasu 2022-04-06 19:10:11 +08:00
|
10
GeruzoniAnsasu 2022-04-06 19:12:05 +08:00
|
11
GeruzoniAnsasu 2022-04-06 19:18:41 +08:00 1
|
12
xpyusrs OP @GeruzoniAnsasu 谢谢解惑了, 难怪怎么调都不对
|