2013-04-28 225 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