我正在与一个API进行交互,该API使用可能包含正斜杠和空格的URI组件。我需要对这个URI组件进行百分比编码,以便正确地对正斜杠和空格进行编码。可以找到示例Go代码 here 。
我转向net/url
来解决这个问题,但是事实证明,它并没有满足我的要求。
url.QueryEscape()
用于查询字符串,因此它将空格转换为+
而不是%20
。 url.Parse()
和url.ParseRequestUri()
会将空格转换为%20
,但它将按需忽略/
。 由于我很可能会对此进行处理(转义为non-trivial),所以我宁愿依靠那里的一些标准库来为我做这件事。经过良好测试的Go库中是否存在这样的标准方法?
旁注:我正在寻找的行为与JS的
encodeURIcomponent
相同。 最佳答案
显然,您发布的版本在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))
}
好问题。