为了账号安全,请及时绑定邮箱和手机立即绑定

编码/解码URL

编码/解码URL

Go
天涯尽头无女友 2021-05-21 16:14:04
在Go中编码和解码整个URL的推荐方法是什么?我知道的方法url.QueryEscape和url.QueryUnescape,但他们似乎并没有被正是我期待的。具体来说,我正在寻找JavaScriptencodeURIComponent和之类的方法decodeURIComponent。
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

MDN上encodeURIComponent

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");
}


查看完整回答
反对 回复 2021-05-24
?
MM们

TA贡献1886条经验 获得超2个赞

从Go 1.8开始,这种情况已经改变。PathEscape除了较旧的版本QueryEscape,我们现在还可以使用unescape对应版本对路径组件进行编码PathUnescape


查看完整回答
反对 回复 2021-05-24
  • 3 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信