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))
}