golang中有urlencode()函数吗?
Is there a urlencode() function in golang?
许多语言,例如 JavaScript 和 PHP,都有一个 urlencode()
函数,可以用来对查询字符串参数的内容进行编码。
"example.com?value=" + urlencode("weird string & number: 123")
这确保 &
、%
、空格等得到编码,因此您的 URL 仍然有效。
我看到 golang 提供了一个 URL 包,它有一个 Encode() function 用于 查询字符串值 。这很好用,但在我的情况下,它需要我解析 URL 而我宁愿不这样做。
我的 URL 由客户声明并且不更改顺序和潜在的重复参数(这在 URL 中是合法的)可能会受到影响。所以我像这样使用 Replace()
:
func tweak(url string) string {
url.Replace("@VALUE@", new_value, -1)
return url
}
@VALUE@
应用作查询字符串参数的值,如:
example.com?username=@VALUE@
所以,我想做的是:
url.Replace("@VALUE@", urlencode(new_value), -1)
Golang 中有这样的函数吗?
是的,您可以在此处使用这些函数来完成:
package main
import (
"encoding/base64"
"fmt"
"net/url"
)
func main() {
s := "enc*de Me Plea$e"
fmt.Println(EncodeParam(s))
fmt.Println(EncodeStringBase64(s))
}
func EncodeParam(s string) string {
return url.QueryEscape(s)
}
func EncodeStringBase64(s string) string {
return base64.StdEncoding.EncodeToString([]byte(s))
}
许多语言,例如 JavaScript 和 PHP,都有一个 urlencode()
函数,可以用来对查询字符串参数的内容进行编码。
"example.com?value=" + urlencode("weird string & number: 123")
这确保 &
、%
、空格等得到编码,因此您的 URL 仍然有效。
我看到 golang 提供了一个 URL 包,它有一个 Encode() function 用于 查询字符串值 。这很好用,但在我的情况下,它需要我解析 URL 而我宁愿不这样做。
我的 URL 由客户声明并且不更改顺序和潜在的重复参数(这在 URL 中是合法的)可能会受到影响。所以我像这样使用 Replace()
:
func tweak(url string) string {
url.Replace("@VALUE@", new_value, -1)
return url
}
@VALUE@
应用作查询字符串参数的值,如:
example.com?username=@VALUE@
所以,我想做的是:
url.Replace("@VALUE@", urlencode(new_value), -1)
Golang 中有这样的函数吗?
是的,您可以在此处使用这些函数来完成:
package main
import (
"encoding/base64"
"fmt"
"net/url"
)
func main() {
s := "enc*de Me Plea$e"
fmt.Println(EncodeParam(s))
fmt.Println(EncodeStringBase64(s))
}
func EncodeParam(s string) string {
return url.QueryEscape(s)
}
func EncodeStringBase64(s string) string {
return base64.StdEncoding.EncodeToString([]byte(s))
}