CNode

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

问答
Wwiscgazf发布于8 年前最后回复8 年前8 回复4139 浏览0 收藏

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

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

查看回复

回复 (8)

W
waitingsong#1·8 年前

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

2
243011068#3·8 年前

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

S
Shasharoman#4·8 年前

看起来像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并打印

C
CodeofGame#6·8 年前

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

W
wiscgazf#7·8 年前

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

W
wiscgazf#8·8 年前

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

参与回复
登录后即可参与回复。登录