req.query 获取查询参数,在IE中出现乱码?
发布于 6 年前 作者 wiscgazf 3370 次浏览 来自 问答

req.query 获取查询参数,在IE中出现乱码?

描述:http://192.168.0.20:30001/notes?search=小程序 从某一个链接跳转到这个查询链接,直接用req.query.search 获取参数 在其他浏览器都可以,就是在IE中 获取的req.query.search 是一个乱码 微信图片_20180912115305.png 微信图片_20180912115421.png

8 回复

ie高级设置里面有个选型 大致是 始终以utf-8 发送请求。你试试切换下看是否于此相关

设置了 还是一样的

所以url一般都需要urlencode处理啊

看起来像IE特有问题,定位一下服务器接收到的具体内容,再对症下药,req.query参数理论上是从原始http.IncomingMessage上解析url得到的,所以用下面的代码测试一下具体接收内容:

const http = require('http');

let server = http.createServer((req, res) => {
    console.log(req.url);
    res.end('hello');
});
server.listen(10000);

跑起来后,在浏览器中访问http://localhost:10000/?search=小程序,正常情况应该打印:/?search=%E5%B0%8F%E7%A8%8B%E5%BA%8F

然后观察IE打印内容…

// 如果对所使用的框架熟悉,可以在req上取原始url并打印

@Shasharoman 嗯嗯 我试试 直接过去全url然后在进行切割参数 自豪地采用 CNodeJS ionic

推荐你看一下这篇文章,能对编码和querystring,有更深的理解各种编码格式(非常经典)

前段时间公司比较忙,所以问题搁置了 毕竟是自己的项目 做的时候也没那么着急

问题已经解决了 前端搜索的时候 用 encodeURI(‘搜索的值’) 编码一下 node后端正常 req.query.search 就可以了 不需要解码 这样在ie中也可以了

回到顶部