go - 如何在 Go 中对包含空格或特殊字符的 URL 进行编码?

标签 go

我有一个包含空格和特殊字符的 URL,如下例所示:

http://localhost:8182/graphs/graph/tp/gremlin?script=g.addVertex(['id':'0af69422 5be','date':'1968-01-16 00:00:00 +0000 UTC'])

我如何在 Go 中对这样的 URL 进行编码?

最佳答案

Url 编码在net/url 中提供包裹。您具有以下功能:

url.QueryEscape("g.addVertex(['id':'0af69422 5be','date':'1968-01-16 00:00:00 +0000 UTC'])")

这给了你:

g.addVertex%28%5B%27id%27%3A%270af69422+5be%27%2C%27date%27%3A%271968-01-16+00%3A00%3A00+%2B0000+UTC%27%5D%29

另请查看 url.URLurl.Values .根据您的需求,这些将为您解决。

如果您只有完整的 URL,您可以尝试解析它,然后像这样重新编码损坏的查询部分:

u, err := url.Parse("http://localhost:8182/graphs/graph/tp/gremlin?script=g.addVertex(['id':'0af69422 5be','date':'1968-01-16 00:00:00 +0000 UTC'])")
if err != nil {
    panic(err)
}   
u.RawQuery = u.Query().Encode()
fmt.Println(u)

但是,请小心。如果字符串包含和号 (&) 或井号 (#),则不会给出您期望的结果。

关于go - 如何在 Go 中对包含空格或特殊字符的 URL 进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28541183/

相关文章:

go - 警告 : Missing 'go_package' option

go - Go中字符串的安全比较

go - 我如何在golang中将字符串转换为整数

go - 通过给键从 map[string]interface{} 调用函数

go - 检查 map 在 Go 中是否有重复值

go - 将 [8]byte 转换为 uint64

database - 变量持续存在时的“延迟”顺序

go - 如何为golang项目的RPM规范创建构建部分?

go - 在 ptr 值上反射(reflect) : call of reflect. Value.FieldByName

go - 使用反射更新结构中的属性