nodejs中web请求乱码

原网页 http://www.web-jia.com/view.php?a=24

今天在写代码通过nodejs中http的get获取数据的时候中文有时候会是乱码

看nodejs文档中的示例代码也是这样写

let rawData = '';
res.on('data', (chunk) => rawData += chunk);
res.on('end', () => {
try {
let parsedData = JSON.parse(rawData);
console.log(parsedData);
} catch (e) {
console.log(e.message);
}
});

这代码一般情况下是没有什么问题的,如果有中文的时候是有可能会是乱码

刚开始不知道怎么回事

后来明白了

其中chunk是buffer对象保存的是字节,这是根据socket的二进制数据

因为中文的utf8一个中文一般是3-4个字节,如果字节不全的话转成字符串的时候就会乱码了

所以上的代码要改成

let uData = Buffer.allocUnsafe(0);
res.on('data', (chunk) => {uData = Buffer.concat([uData, chunk], uData.length + chunk.length);});
res.on('end', () => {
uData = uData.toString();

let mt = uData.match(appconfig.reg[si][li]);

});

这样中文中不就没有乱码了

 

 

三种方法实现Javascript控制ScrollBar(滚动条)
5.2 CSS切换
5个有趣的JavaScript代码片段分享
HTML 5指引下一代网络应用开发标准
stream.js:一个新的JavaScript数据结构
Node.js后端框架设计构想(1)
HTML 5怎么就成了RIA“杀手”?
Javascript实现动态创建DIV步骤

posted on 2017-04-13 20:50  hongyi1159  阅读(351)  评论(0编辑  收藏  举报