Node.js/Express-如何设置响应字符编码
Node.js / Express - How do I set response character encoding?
假设我得到了:
app.get('/json', function(req, res) {
res.set({
'content-type': 'application/json'
}).send('{"status": "0"}');
});
我试图以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"}');
});
在Express中设置字符编码的正确方法是什么?
如果您发现Express:尚未设置字符集,您可能需要在内容类型字符串的末尾显式添加字符集:
res.set({ 'content-type': 'application/json; charset=utf-8' });
字符集是而不是总是自动设置的,并且确实需要设置才能在任何地方正确工作(即使用所有浏览器和所有ajax库),否则可能会遇到编码错误。
特别是在Express4.x中,我发现根据您试图返回的对象,当您调用res.json(someObject)
时,它通常会自动返回content-type: application/json; charset=utf-8
,但并不总是如此。
在某些对象上调用res.json()
时,它可以返回content-type: application/json
(即不使用字符集编码!)。实际上,我不确定是什么触发了这一点,除了它是关于返回的特定对象的。
我之所以注意到它,是因为自动测试明确检查了标头,发现它在一些响应中缺少字符集声明(尽管内容类型仍然是application/json
)。
使用res.charset:http://expressjs.com/api.html#res.charset
res.charset = 'value';
res.send('some html');
// => Content-Type: text/html; charset=value
但是,JSON默认为UTF-8,因此不需要设置任何内容。
这对我有效
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
遇到类似的问题,我从数据库中收集瑞典语字符并将其输出为JSON对象,当数据库中的字符不是UTF-8时,node并不关心JSON是否必须是UTF-8。因此,假设"您不需要设置任何内容"是错误的。取决于您使用的字符集。
在手动设置标头参数之前,请检查服务器默认情况下已经发送的内容。在我的例子中,我使用的是一个"无服务器"云提供的Node.js实例。显然,这些通常是前端的w/NGINX,我认为这是基于默认设置设置这些东西的原因。。。我根本不需要res.set
任何东西。当然,我正在提供HTML。。。只要说一声——在你修理之前,确保它坏了。
accept-ranges: bytes
accept-ranges: bytes
cache-control: private
content-encoding: gzip
content-type: text/html; charset=utf-8
date: Fri, 21 Dec 2018 21:40:37 GMT
etag: W/"83-xwilN/BBLLLAAAHHH/0NBLAH0U"
function-execution-id: 5thvkjd4wwru
server: nginx
status: 200
vary: accept-encoding, cookie, authorization
via: 1.1 varnish
x-cache: MISS
x-cache-hits: 0
x-cloud-trace-context: 18c611BBBBLLLLAAAHHH9594d9;o=1
x-powered-by: Express
x-served-by: cache-dfw18631-DFW
x-timer: S15BBLLLAAHHH.913934,VS0,VE3404
- 如何在数据表中设置从Ajax响应选中的复选框
- angular.js我如何设置数据什么是响应值
- 节点,express应用程序返回text/javascript响应头(Content-Type),尽管设置了applic
- 正在Javascript响应中设置会话变量
- 在jasmine ajax mock响应中设置响应头
- 在滚动上设置响应式固定导航
- Solr 和 AJAX 正确设置响应查询
- 整页.js - 设置响应宽度和滚动溢出在移动设备上中断页面
- 如何设置响应式 SVG 宽度
- 使用javascript设置响应标头
- 如何在页面加载前使用CSS设置响应滑块的高度
- Node.js/Express-如何设置响应字符编码
- 如何在JQuery中设置响应
- Sailsjs:基于请求参数设置响应方法
- 在javascript中设置响应断点
- 为什么当async为false时,XHR不能设置响应类型
- 好的Uploader和ServiceStack设置响应头
- 如何为UL elemet设置响应式设计
- 如何在express.js资源上设置响应头?
- 在TinyMCE上设置响应式过滤器