Go 如何在URL中转义句点字符

Go 如何在URL中转义句点字符,go,Go,你好 比如说,我有一个URL http://someurl.com?someparam=my.dot.param 我知道句点(“.”-symbol)是一个有效的HTTP查询符号,但由于某些原因,我需要用“%2E”对其进行转义 我想使用类似于EscapedPath()的东西,但是,正如我前面提到的,句点(“.”-symbol)是一个有效的HTTP查询符号,所以我无法这样做 我所做的 1) 我删除字符串“my.dot.param”中的所有句点,并使用一些常量(如“\u remove\u this\

你好

比如说,我有一个URL

http://someurl.com?someparam=my.dot.param
我知道句点(“.”-symbol)是一个有效的HTTP查询符号,但由于某些原因,我需要用“%2E”对其进行转义

我想使用类似于EscapedPath()的东西,但是,正如我前面提到的,句点(“.”-symbol)是一个有效的HTTP查询符号,所以我无法这样做

我所做的

1) 我删除字符串“my.dot.param”中的所有句点,并使用一些常量(如“\u remove\u this\u dot”) 所以我得到了“我的移除这个点移除这个点参数”

2) 获取最终URL后:

u.RawQuery = q.Encode()
retURL := u.String()
我知道

所有的工作,但代码看起来很糟糕-有什么方法可以做到正确的吗?也许是标准图书馆


PS对不起,我的英语不好。

有时需要糟糕的代码来解决网络中的错误

解决该问题的一种更简单的方法是将原始查询中的
替换为包含
的值

q.Set("someparam", "my.dot.param")
u.RawQuery = strings.ReplaceAll(q.Encode(), ".", "%2E")
result := u.String()

.

通常情况下,需要编写糟糕的代码来解决网络对等中的错误。更简单的代码是将查询中的
替换为原始的
my.doc.param
值:
u.RawQuery=strings.ReplaceAll(q.Encode(),“,“%2E”)
Cerise Limón,我记得-q.Encode()将对查询进行编码,%将被编码。因此,这不是一个选项我建议用
q.Encode()
的结果上的
%2E
替换
,而不是
q.Encode()
的输入。
q.Set("someparam", "my.dot.param")
u.RawQuery = strings.ReplaceAll(q.Encode(), ".", "%2E")
result := u.String()