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"