web-dev-qa-db-ja.com

Node.jsでUTF-8を取得する方法は?

APIで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/');
23
Jack

応答ジェネレーターに接続するか、以下を実行するミドルウェアを作成します。

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

それ以外の場合、ブラウザはお気に入りのエンコーディングでコンテンツを表示します。

これが役に立たない場合、DBはおそらく間違ったエンコーディングになっています。

編集:答えはほぼ5年前なので、APIは変更されました。現在のnode.jsバージョンの場合:

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

コンテンツタイプを設定してもこの問題を解決できません。エンコード機能でこの問題を解決しました。

res.cookie('someCookie', someCookie, {
  encode: c => c,
});

詳細については、 express cookie

ExpressJSバージョン:4.16.4

1
Murat Ersin