表达js编码头到utf-8

时间:2016-02-25 15:30:48

标签: node.js express encoding utf-8 header

我正在使用express js 4.13.3和nodejs 12 我收到标题name: "John D�m"的请求我甚至不知道它的编码,所以我不知道如何转换它。 结果应为name: "John Döm"

这是路由

var express = require('express')

var app = express();

app.configure(function () {
    app.use(express.logger('dev'));
    app.use(express.bodyParser());
});

app.get('/drivers', function(req,res){
res.send(req.headers["name"])
});

app.listen(3000);
console.log('Up: http://127.0.0.1:3000/');

我尝试了res.header("Content-Type", "application/json; charset=utf-8");

我可以设置express来编码吗?用中间件还是什么? 先谢谢你。

2 个答案:

答案 0 :(得分:0)

出于某种原因,这对我有用:

res.end(JSON.stringify(req.headers.name, null, 2), 'utf-8');

但不是这样:

res.send(req.headers.name)

所以我最终得到了:

    var string = req.headers.name;
    return res.send('<!DOCTYPE html><html> <head><meta charset="utf-8"></head><body>' +
        string +
    '</body></html>');

答案 1 :(得分:0)

我试图解决传入请求标头编码错误的问题。他们期望以 iso-8859-1 编码,但我的 OIDC 提供商使用 UTF-8。没有办法改变。最后用了这个:

name = Buffer.from(req.headers['oidc_claim_name'], 'latin1').toString('utf-8');