编码/解码URL

在Go中编码和解码整个URL的推荐方法是什么?我知道的方法url.QueryEscapeurl.QueryUnescape,但他们似乎并没有被正是我期待的。具体来说,我正在寻找JavaScriptencodeURIComponent和之类的方法decodeURIComponent



天涯尽头无女友
浏览 235回答 3
3回答

绝地无双

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

MM们

从Go 1.8开始,这种情况已经改变。PathEscape除了较旧的版本QueryEscape,我们现在还可以使用unescape对应版本对路径组件进行编码PathUnescape。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go