【Node.js】使用iconv-lite解决中文乱码 (GB2312)

本文介绍了如何在Node.js环境中利用iconv-lite库解决GB2312编码导致的中文乱码问题,帮助开发者正确地处理和显示中文内容。

作为新手,碰到问题了就google了一下,网上已经有teary:window下nodejs爬取gb2312网页出现乱码的解决方案出来了。

本文和上面的作法几乎相同,只是自己不想引用bufferhelper,自己用JavaScript原生的Buffer替代实现了。

代码如下:

       
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
       
var http = require( "http");
var iconv = require( 'iconv-lite');
var url = 'http://www.qq.com/';
http.get(url, function(res){
var arrBuf = [];
var bufLength = 0;
res.on( "data", function(chunk){
arrBuf.push(chunk);
bufLength += chunk.length;
})
.on( "end", function(){
// arrBuf是个存byte数据块的数组,byte数据块可以转为字符串,数组可不行
// bufferhelper也就是替你计算了bufLength而已
var chunkAll = Buffer.concat(arrBuf, bufLength);
var strJson = iconv.decode(chunkAll, 'gb2312'); // 汉字不乱码
console.log(strJson);
});
});

GB2312编码的网页链接有:腾讯主页;GBK编码的网页链接有:搜狐主页。

怎么查看网页是哪些编码呢?可以直接浏览器打开然后右键查看源代码,在meta标签中去查看Content-Type就好了.如下图.

charset.web


About Sodino

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值