在Go中编码和解码整个URL的推荐方法是什么?我知道的方法url.QueryEscape和url.QueryUnescape,但他们似乎并没有被正是我期待的。具体来说,我正在寻找JavaScriptencodeURIComponent和之类的方法decodeURIComponent。
3 回答
绝地无双
TA贡献1946条经验 获得超4个赞
encodeURIComponent会转义除以下字符外的所有字符:字母,十进制数字,
'-', '_', '.', '!', '~', '*', ''', '(', ')'
从Go的url.QueryEscape(具体来说是shouldEscape
私有函数)的实现中,转义除以下字符外的所有字符:字母,十进制数字,'-', '_', '.', '~'
。
与Javascript不同,Go的QueryEscape()将转义'!', '*', ''', '(', ')'
。基本上,Go的版本严格符合RFC-3986。Javascript较宽松。再次来自MDN:
如果希望严格遵守RFC 3986(保留!,',(,)和*),即使这些字符没有正式的URI分隔用法,也可以安全地使用以下字符:
function fixedEncodeURIComponent (str) { return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A"); }
MM们
TA贡献1886条经验 获得超2个赞
从Go 1.8开始,这种情况已经改变。PathEscape
除了较旧的版本QueryEscape
,我们现在还可以使用unescape对应版本对路径组件进行编码PathUnescape
。
- 3 回答
- 0 关注
- 234 浏览
添加回答
举报
0/150
提交
取消