比如要查询字符串: 限时特惠!仅需0.5%25!
直接在浏览器中输入:
但搜索框中会出现,
%25变成%了。
我特意在Node.JS中试了下:
在后台接收到的原始地址是:
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!"
无语了。。。这算bug?。。。强行bug。。。