2013-04-28 176 views
17

我如何在我的API上获得UTF-8支持? 目前,一个字符串输出是这样的:如何在Node.js中获取UTF-8?

name: "John D�m" 

相反的:

name: "John Döm" 

结帐下面app.js:

var express = require('express'), 
    driver = require('./driver'); 

var app = express(); 

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

app.get('/drivers', driver.findAll); 

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

在JS的所有字符串是UTF8,除非明确地设置为别的东西,所以这是很难说的地方错误会来自。 “驱动程序”是做什么的?您提供的代码是标准样板,并没有真正的帮助。 – loganfsmyth 2013-04-28 20:21:25

+0

'driver'从mongoDB抓取所有驱动程序并打印所有数据。请参阅此处的链接:http://xn--billstrm-t4a.se:1337/ – Jack 2013-04-28 20:23:30

+0

@loganfsmyth'driver = require('./ driver');'几乎与此相同:https:// gist。 github.com/ccoenraets/3819468#file-wines-js – Jack 2013-04-28 20:24:45

回答

29

钩到您应答发生器或创建一个中间件做以下事情:

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

否则,浏览器以他最喜欢的编码显示内容。

如果这没有帮助你DB可能是在错误的编码。

编辑:由于答案已近5年,API已经改变。对于目前的Node.js版本使用:

res.setHeader("Content-Type", "application/json; charset=utf-8"); 
+1

'res.charset ='utf-8''是一回事,对吧?我发现它更干净 – franzlorenzon 2013-09-10 10:51:28

+1

res.charset没有为我工作(nodejs 0.10.8),但这个json风格工作:http://pastebin.com/NwcVEAra – loloof64 2014-05-30 10:47:43

+0

这个答案仍然正确吗? ...我在代码中遇到困难...我不断收到 标记...... – 2015-10-12 21:40:00

-4

我的问题与此解决:

res.writeHeader(200 , {"Content-Type" : "text/html; charset=utf-8"});

+2

一起使用。导致问题,如果你想返回的内容,但一个HTTP状态代码,而不是'200'。 – TheHippo 2016-10-09 13:05:08