Use iconv-lite to encode the body and set charset to content-type.
# npm ..
npm i koa-charset
# yarn ..
yarn add koa-charset
const Koa = require('koa');
const charset = require('koa-charset');
const app = new Koa();
app.use(charset());
app.use(function (ctx) {
ctx.body = '你好';
ctx.type = 'text/html; charset=gbk';
});
app.listen(3000);
- charset: set global charset by options.charset
You can set ctx.charset
to cover the global charset.
app.use(function (ctx) {
ctx.charset = 'gb2312';
ctx.body = '你好';
});
You can disable charset by ctx.charset = false
.
app.use(function (ctx) {
ctx.charset = false;
ctx.body = 'hello';
});
also this module will get the charset from Content-Type
, so you can just use koa-charset
,
then this middleware will automatically re-encode the body only if the charset is not utf8.
const app = new Koa();
app.use(charset());
app.use(function () {
const charset = ctx.acceptsCharsets('utf8', 'gbk') || 'utf8';
ctx.vary('accept-charset');
ctx.type = `text/plain; charset=${charset}`;
ctx.body = 'something';
});