この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
おばんです、今週末こそ映画『君の名は。』を見るぞと心に誓い、前日夜に小説版を一気読みして温めたものの、どこの映画館も満席で不完全燃焼の田中です。
先日Qiitaにて以下の記事を書きました。 node.js + expressでPOSTを受け取る & POSTパラメータをJSONで取得する - Qiita
これでさて簡単なAPIが作れるぞ! と思い立ち、普段慣れているiOSでクライアントを作って呼び出したものの日本語が文字化けする。 日本語の文字化けの回避方法です。
結論
なんのことはない、charset=utf-8;
をheaderに指定する必要がありました。
環境
- node.js: v6.2.2
- express: 4.14.0
- body-parser: 1.15.2
ソースコード
// Setup requires.
const express = require('express');
const bodyParser = require('body-parser');
// Setup server and uses.
const app = express();
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
// Setup listen.
app.listen(3000);
console.log('Server is online.');
// Setup APIs.
// GET
app.get('/', function(req, res) {
console.log('GET Request.');
res.header('Content-Type', 'text/plain;charset=utf-8');
res.end('GET承り太郎');
});
// POST
app.post('/', function(req, res) {
console.log('POST Request.');
const text = 'POST承り太郎' + req.body.name;
res.header('Content-Type', 'text/plain;charset=utf-8');
res.end(text);
});
解説
res.header('Content-Type', 'text/plain;charset=utf-8');
レスポンスヘッダの追加。Content-Typeをtext/plainに指定し、文字コードをUTF-8に指定する。
まとめ
うっかりです。 文字コードは指定しましょう。