前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于url传值的问题—encodeURIComponent

关于url传值的问题—encodeURIComponent

作者头像
_kyle
发布2020-08-24 12:46:36
1.4K0
发布2020-08-24 12:46:36
举报
文章被收录于专栏:kyle的专栏

在以往的通过url进行数据传值时,如果需要传输对象,通常我是使用JSON.stringify将键值对的值通过编译为JSON字符串,之后到另一个页面,通过JSON.parse进行解析。直到上周遇到了一个问题。测试告诉我有一个订单没有回显,看看是不是报错了,之后进行排查,一看报错了,最初可能以为是超过url的长度了,对比一下其他订单传值都是差不多长度,并没有多长,后面调试发现传输到下一个页面的值只有一截,问题找到了,原因是因为前台用户输入了一个 特殊字符=(等于符号),由于等于符号本身在url传输时有着特殊的作用。

为了避免这种问题的再次发生,我们需要对url进行编码,需要在传输的过程中对用户输入部分进行encodeURIComponent编码,之后进行decodeURIComponent进行解码。为了保险一点,传输时,不管是否为用户输入,最好都编码一次。

当然使用encodeURIComponent不能解码的字符字母、数字、(、)、.、!、~、*、'、-和_,其中!, ', (, ), 和 *为 RFC 3986保留字符,我们可以通过下面这种方式将其转化为Unicode码,需要用到时在用decodeURIComponent进行解码

代码语言:javascript
复制
function fixedEncodeURIComponent (str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
    return '%' + c.charCodeAt(0).toString(16);
  });
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档