OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

decodeURIComponent有个BUG,当浏览器请求地址含%+数字时,会解析错误


分享到
分类 JS学习   关键字 JavaScript   发布 kris  1495603303773
注意 转载须保留原文链接,译文链接,作者译者等信息。  
比如要查询字符串: 限时特惠!仅需0.5%25!

直接在浏览器中输入:

https://stackoverflow.com/search?q=限时特惠!仅需0.5%25

但搜索框中会出现,



%25变成%了。

我特意在Node.JS中试了下:

浏览器输入  http://localhost:8064/view/限时特惠!仅需0.5%25

在后台接收到的原始地址是:

Handler matched 53 /view/:fileUrl$ /view/%E9%99%90%E6%97%B6%E7%89%B9%E6%83%A0%EF%BC%81%E4%BB%85%E9%9C%800.5%25%EF%BC%81

此时用decodeURIComponent解析

decodeURIComponent('%E9%99%90%E6%97%B6%E7%89%B9%E6%83%A0%EF%BC%81%E4%BB%85%E9%9C%800.5%25%EF%BC%81')

结果变成:

"限时特惠!仅需0.5%!"

25消失了。

解决办法

在发出请求前,先手动在前端编码,再在后端解码:

encodeURIComponent('限时特惠!仅需0.5%25!')
> "%E9%99%90%E6%97%B6%E7%89%B9%E6%83%A0%EF%BC%81%E4%BB%85%E9%9C%800.5%2525%EF%BC%81"
decodeURI('%E9%99%90%E6%97%B6%E7%89%B9%E6%83%A0%EF%BC%81%E4%BB%85%E9%9C%800.5%2525%EF%BC%81')
> "限时特惠!仅需0.5%25!"
社区评论 ( Beta版 )
  • #0 路丘扛 1498040169301

    无语了。。。这算bug?。。。强行bug。。。

OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. JavaScript使用ES6的Class面向对象继承时 this is not defined 解决方法
  2. Docker改名Moby:急于商业化陷入品牌更名乱象
  3. Java已快过时?斯坦福大学将JavaScript作为计算机科学入门课
  4. TCP/UDP协议比较:在Node.JS中UDP服务器和客户端通信示例
  5. Node.JS通过原型和类继承EventEmitter,实现收发事件的几种方法
  6. "永恒之蓝"比特币勒索病毒(WannaCry)的攻击原理
  7. 周鸿祎:一些程序员没有商业意识,却又很自负,一看就知道不会创业
  8. Node.js网页抓取:一个最简单的http请求客户端示例(request client)
  9. Node.JS用Socket实现FTP Server服务器和Client客户端
  10. Node.JS更改Windows注册表regedit的几种方法
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. decodeURIComponent有个BUG,当浏览器请求地址含%+数字时,会解析错误
  2. NodeJS的DNS使用:域名解析,MX记录查询,SPF反垃圾邮件测试
  3. Node.JS如何调用Chrome打开浏览器链接地址
  4. 用纯Node.JS弹出Windows系统消息提示框(MessageBox)
  5. 利用Windows注册表将你的Node.JS程序添加到右健菜单直接运行
  6. JavaScript中splice与slice的区别、数组的复制以及在指定位置添加删除元素
  7. Node.JS中如何判断递归嵌套的所有回调函数已经执行完毕,以读取目录下所有文件为例:计数比Promise方式快将近一倍
  8. Node.js网页抓取:一个最简单的http请求客户端示例(request client)
  9. JavaScrip字符串模板表达式中的反引号怎么打?
  10. Node.JS用Socket实现FTP Server服务器和Client客户端

 关键字 - JavaScript
  1. decodeURIComponent有个BUG,当浏览器请求地址含%+数字时,会解析错误
  2. Linux下用node.js提取Word(doc/docx)/PDF文本内容
  3. JavaScript的设计缺陷?浮点运算:0.1 + 0.2 != 0.3
  4. 用JavaScript获取当月第一天和最后一天
  5. JavaScript中NaN的秘密
  6. JavaScript也有getter/setter方法:ES5 Object对象的5个不为人知的特性
  7. JavaScript中splice与slice的区别、数组的复制以及在指定位置添加删除元素
  8. JavaScrip字符串模板表达式中的反引号怎么打?
  9. Node.JS更改Windows注册表regedit的几种方法
  10. AngularJS在大型单页面应用中的性能优化(二)

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号