使用restify来处理调用的简单程序。我有这个测试功能,我发回“€”。浏览器的结果是“�”。怎么样?
server.get('/test', function(req, res, next) {
res.send(200, "€");
});
我用谷歌搜索了这个并发现有字符编码问题的人通过将字符集设置为utf-8来解决它:
res.header("Content-Type", "application/json; charset=utf-8");
没有区别。所以我试过了:
res.set({
'Content-Type' : 'text/plain',
'charset' : 'utf-8'
});
现在我回到了�而不是“�”,这不是响应周围的引号。
如果我将我的代码保存为UTF-8而不是visual studio(西欧(Windows)代码页1252)中使用的默认编码,我会回来“¶”。显然它对结果有影响,但不是所希望的。
显然,我在处理nodejs中的字符编码方面有些遗漏。
如果我在fiddler中查看响应,则响应会正确显示为ö,但在浏览器中显示为“¶”。为了确保chrome中的查看器插件没有弄乱结果(因为它在fiddler中正确显示)我也在IE和Firefox中尝试过它。
以下是小提琴响应的原始视图
HTTP/1.1 200 OK
Content-Type: text/plain
charset: utf-8
Content-Length: 2
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, Api-Version, Response-Time
Access-Control-Allow-Methods: GET
Access-Control-Expose-Headers: Api-Version, Request-Id, Response-Time
Connection: Keep-Alive
Content-MD5: RPLFC4OPkpcNLBHi+pi8fQ==
Date: Tue, 31 Mar 2015 12:41:11 GMT
Server: restify
Request-Id: 365e0550-d7a3-11e4-b7d8-43b88a1e9b3c
Response-Time: 1
ö