urlencode
golang下可以使用net/url模块实现urlencode和urldecode操作。
urlencode具体实现的函数为url.QueryEscape

urldecode具体实现的函数为url.QueryUnescape

另外 url.ParseRequestURI

QueryUnescape会处理+以及%20变成空格,ParseRequestURI只把%20变成空格

根据最新的RFC3986

1 URI中的字段只能空格编码成%20

golang使用ParseRequestURI来解析,符合标准

2 query string作为application/x-www-form-urlencoded的方式,可以编码成+,也可以编码成%20

URL中不管是URI还是query string,编码成%20

示例:

package main

import (
    "fmt"
    "net/url"
)

func main() {
    s := "this will be esc@ped!"
    fmt.Println("http://example.com/say?message="+url.QueryEscape(s))
}

输出结果
http://example.com/say?message=this+will+be+esc%40ped%21

表单编码

params := url.Values{}
params.Add("message", "this will be esc@ped!")
params.Add("author", "golang c@fe >.<")
fmt.Println("http://example.com/say?"+params.Encode())
本文链接地址:https://const.net.cn/295.html

标签: none

添加新评论