我与API进行交互,该API采用可能包含正斜杠和空格的URI组件。我需要对这个URI组件进行百分比编码,以便正斜率和空格都被正确编码。示例Go代码可以在 here 找到。
我转向net/url
来解决这个问题,但事实证明它并没有做我想做的事情。
url.QueryEscape()
适用于查询字符串,因此它将空格转换为+
而不是%20
。url.Parse()
和url.ParseRequestUri()
会将空白变为%20
,但它会忽略/
。由于我很可能会把它搞砸(逃脱non-trivial),我更倾向于依靠一些标准库来为我做这件事。这种标准方法是否存在于经过充分测试的Go库中?
旁注:我寻求的行为与JS encodeURIcomponent
相同。
答案 0 :(得分:0)
显然,您的问题版本已在go1.8 url.PathEscape
中显示。
在go1.8中,您正在寻找的代码将非常简单:
package main
import (
"fmt"
"net/url"
)
const expected = "/object/test%2Fbar%20baz"
func main() {
uri := "/object/"
name := "test/bar baz"
fmt.Printf("%-25s %s\n", "Expected:", expected)
fmt.Printf("%-25s %s\n", "Actual :", uri+url.PathEscape(name))
}
好问题。