gsk*_*lee 21 javascript node.js express
说我得到了:
app.get('/json', function(req, res) {
res.set({
'content-type': 'application/json'
}).send('{"status": "0"}');
});
Run Code Online (Sandbox Code Playgroud)
我试图将响应作为UTF-8发送,但没有成功:
app.get('/json', function(req, res) {
// From Node.js Official Doc
// http://nodejs.org/api/http.html#http_http_request_options_callback
res.setEncoding('utf8');
res.set({
'content-type': 'application/json'
}).send('{"status": "0"}');
});
Run Code Online (Sandbox Code Playgroud)
在Express中设置字符编码的正确方法是什么?
Iai*_*ins 25
如果您发现Express尚未设置,则可能需要在内容类型字符串的末尾显式添加字符集:
res.set({ 'content-type': 'application/json; charset=utf-8' });
Run Code Online (Sandbox Code Playgroud)
字符集并不总是自动设置,并且需要设置为在所有浏览器和所有ajax库中正确工作,否则您可能会遇到编码错误.
在Express 4.x中,我发现根据您尝试返回的对象,它通常会content-type: application/json; charset=utf-8在您调用时自动返回res.json(someObject),但并非总是如此.
当调用res.json()某些对象时,它可以返回content-type: application/json(即没有charset编码!).我不确定是什么触发了这个,除了它是关于返回的特定对象的东西.
我只注意到它,因为自动化测试明确检查了标题,发现它在某些响应中缺少charset声明(即使内容类型仍然存在 application/json).
Dan*_*ohn 10
使用res.charset:http://expressjs.com/api.html#res.charset
res.charset = 'value';
res.send('some html');
// => Content-Type: text/html; charset=value
Run Code Online (Sandbox Code Playgroud)
但是,JSON默认为UTF-8,因此您无需设置任何内容.
| 归档时间: |
|
| 查看次数: |
49060 次 |
| 最近记录: |