net/urlurlencodeurldecode
  • QueryEscape:类似URLEncoder

  • QueryUnescape:类似URLDecoder

代码如下:

package main
import(
    "fmt"
    "net/url"
)
func main()  {
    var urlStr string = "www.baidu.com"
    escapeUrl := url.QueryEscape(urlStr)
    fmt.Println("编码:",escapeUrl)
    enEscapeUrl, _ := url.QueryUnescape(escapeUrl)
    fmt.Println("解码:",enEscapeUrl)
}

如果涉及到多个参数转码的,这在get和post请求中都有,比如id=100&method=get这样的。可以在通过url.Values进行增加后转码

package main
import (
	"fmt"
	"net/url"
)
func main() {
	params := url.Values{}
	params.Add("name", "zhangsan")
	params.Add("method", "get")
	fmt.Println(params.Encode())
}
#输出:
method=get&name=zhangsan

同样的,我们通过url的其他函数处理操作过后,一个典型的get请求的URL如下:

package main
import (
	"fmt"
	"net/url"
)
func main() {
	// Let's start with a base url
	baseUrl, err := url.Parse("http://www.baidu.com")
	if err != nil {
		fmt.Println("Malformed URL: ", err.Error())
		return
	}
	// Add a Path Segment (Path segment is automatically escaped)
	baseUrl.Path += "path with?reserved characters"
	// Prepare Query Parameters
	params := url.Values{}
	params.Add("id", "100")
	params.Add("method", "get")
	// Add Query Parameters to the URL
	baseUrl.RawQuery = params.Encode() // Escape Query Parameters
	fmt.Printf("Encoded URL is %qn", baseUrl.String())
}
Encoded URL is "http://www.baidu.com/path%20with%3Freserved%20characters?id=100&method=get"