2013-04-28 8 views
17

Come ottengo il supporto UTF-8 sulla mia API? Al momento, a uscite stringa come questo:Come ottenere UTF-8 in Node.js?

name: "John D�m" 

Invece di:

name: "John Döm" 

Checkout app.js di seguito:

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

Tutte le stringhe di JS sono UTF-8 a meno che non esplicitamente impostato su qualcosa di diverso, quindi è difficile dire dove il vostro l'errore verrebbe da. Cosa fa 'driver'? Il codice che hai fornito è standard standard e non aiuta molto. – loganfsmyth

+0

'driver' cattura tutti i driver da un mongoDB e stampa tutti i dati. Vedi link qui: http://xn--billstrm-t4a.se:1337/ – Jack

+0

@loganfsmyth 'driver = require ('./ driver');' È praticamente lo stesso di questo: https: // gist. github.com/ccoenraets/3819468#file-wines-js – Jack

risposta

29

Hook in voi risposta generatore o creare un middleware quello che segue quanto segue:

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

Altrimenti il ​​browser visualizza il contenuto nella sua codifica preferita.

Se questo non aiuta DB è probabilmente nella codifica errata.

Modifica: Poiché la risposta ha quasi 5 anni, l'API è cambiata. Per node.js attuali versioni utilizzano:

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

'res.charset = 'utf-8'' è la stessa cosa, giusto? Lo trovo più pulito – franzlorenzon

+1

res.charset non ha funzionato per me (nodejs 0.10.8) ma questo stile json funzionava: http://pastebin.com/NwcVEAra – loloof64

+0

Questa risposta è ancora corretta? ... Sto attraversando un periodo difficile nel mio codice ... Continuo a ricevere marchi ... –

-4

Il mio problema risolto con questo:

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

+2

Questo potrebbe portare a problemi, se si desidera restituire il contenuto, ma un codice di stato HTTP diverso da '200'. – TheHippo