article
Node.js 处理 GBK 编码模板
如果你需要对非 UTF8 编码的文本进行处理,如 GBK 编码的,那么我们只有遵循以下原则处理就ok:
Node.js 处理 GBK 编码模板
字符串基本原则
如果你需要对非 UTF8 编码的文本进行处理,如 GBK 编码的,那么我们只有遵循以下原则处理就ok:
fs.readFile(filepath, cb)
=> GBK encoding Buffer
=> iconv decode gbk
=> utf8 js String
=> 处理String
=> iconv encode gbk
=> GBK encoding Buffer
=> send to client
如果你只需要将 GBK 编码的文本直接输出,那么就不需要转换,直接将 GBK 编码的 Buffer 输出即可.
res.send(gbkBuffer);
示例
将 GBK 模板文件进行简单处理,能按 UTF8 和 GBK 两种编码选择输出.
@see app.js
var connect = require("connect");
var fs = require("fs");
var path = require("path");
var iconv = require("iconv-lite");
var app = connect();
var filepath = path.join(__dirname, "index.html");
var content = fs.readFileSync(filepath);
app.use(function (req, res) {
var s = iconv.decode(content, "gbk");
if (req.url === "/utf8") {
res.setHeader("Content-Type", "text/html; charset=utf8");
s = s
.replace("<title>淘宝网 - 淘!我喜欢</title>", "<title>淘宝网 - 淘!我喜欢 UTF8</title>")
.replace('<meta charset="gbk">', '<meta charset="utf8">')
.replace("你好啊", "你好啊 UTF8");
// show utf8 page
return res.end(s);
}
// show gbk page
res.setHeader("Content-Type", "text/html; charset=gbk");
s = s
.replace("<title>淘宝网 - 淘!我喜欢</title>", "<title>淘宝网 - 淘!我喜欢 GBK</title>")
.replace("你好啊", "你好啊 GBK");
res.end(iconv.encode(s, "gbk"));
});
app.listen(1984);
有爱
希望本文对你有用.
http://fengmk2.github.io/blog/2014/iconv-lite/iconv-lite.html
Comments