logo科技微讯

微信小程序 decodeURIComponent 真的无效吗

作者:科技微讯
日期:2022-06-02
📝 笔记
wx.navigateTo({
  url: "/pages/index/index?url=" + encodeURIComponent("https://kejiweixun.com"),
});

在上面的例子中,向页面传入一个 url 参数,并按照标准做法,先对 url 进行 encodeURIComponent,然后在目标页面 decodeURIComponent 这个 url,以为这样就可以了,但通过转发打开这个页面时,decodeURIComponent 可能无效。

微信社区的相关问题:

根据这篇文章的分析,decodeURIComponent 并不是无效,而是在转发的过程中,页面参数不知为何被 encodeURIComponent 了多次,而你的代码只对页面参数 decodeURIComponent 了一次。文章作者的解决办法是根据 url 中是否包含 %,而对 url 进行一次或多次 decodeURIComponent

另一个解决方法是把 url 转换为 base64 字符串,但 base64 可能包含 +/= 这三个字符,用在 url 时同样需要先 encodeURIComponent,这和直接使用 url 无区别,所以不要使用原版 base64,而是使用使用 base64 的衍生版 base64Url


相关文章:

donation赞赏
thumbsup0
thumbsdown0
暂无评论