手机页面跳转时传递中文参数出现乱码问题

时间:2020-12-24 20:25:51

在项目过程中,遇到一个问题。在一个页面的输入框获得输入的数据,跳转并将参数传到另一个页面(location.hash),再用ajax发送请求。

此时,如果是在PC端,输入中文进行搜索是没问题的,但是在手机端查看URL是会发现中文变成乱码。

于是借由百度进行检验,发现PC端URL中可含有中文参数,而手机端的中文参数在URL中已被转为utf码。

猜测引起这个问题的原因和浏览器有关。

查看浏览器的审查元素后发现谷歌浏览器在发送ajax请求时已将中文参数转化为UTF-8码。

最后的解决方法是在页面间传递参数前先将中文参数转化为utf-8码,然后在调用ajax发送请求时再将参数解码。具体使用了encodeURLComponent()和decodeURLComponent()。