微信小程序query参数解析问题及解决方案
问题描述
在微信小程序开发中,我们通常通过页面生命周期回调函数 onLoad 的第一个参数来获取页面 URL 中的 query 参数。微信小程序框架会自动解析 URL 中的查询字符串,并将其作为参数传递给页面。
然而,当 query 参数值中包含等号(=)字符时,微信小程序的解析机制会出现问题,导致参数值被错误截断。
问题案例
原始小程序链接:
1 | pages/index/index?skin_id=jzWddAEWvD&channel_id=1639617&product_type=5&appid=wx3cc2cddf09969268&short_link_code=3==qMsxn&product_id=81 |
实际解析结果:

short_link_code被解析为3- 期望值应为
3==qMsxn
这种解析错误会导致后续业务逻辑失败,例如使用错误的短链码获取长链接时会失败。
问题原因分析
微信小程序的 URL 解析机制与浏览器解析有差异,以下是浏览器解析结果。

可以看出,在浏览器中解析是正常的。
解决方案
修改参数生成逻辑:
在对微信小程序通过 url 进行传参中,生成短链码或其他可能包含等号的参数时,后端应该避免使用等号字符,或者对等号进行编码处理。
1 | // 后端生成短链码时避免使用等号 |
总结
微信小程序的 query 参数解析机制有其局限性,特别是在处理包含等号的参数值时。通过合理的参数设计和编码处理,可以有效避免这类问题。在实际开发中,建议从源头控制参数内容,避免使用可能引起解析冲突的特殊字符。
相关参考
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.