nodejs如何儲存一個GBK編碼的文件


思路:utf-8 -> decode(to buffer) -> convert to gbk(buffer also) -> write buffer to file.

var fs = require('fs');
var iconv = require('iconv-lite');

// 這里是utf8
var str = '坑爹啊,都是國際項目了,編碼居然還用gbk';
console.log(new Buffer(str).length);

// 轉換成gbk
var encoded = iconv.encode(str, 'gbk');

fs.writeFile('gbk.txt', encoded, function () {
  var buf = fs.readFileSync('gbk.txt');
  console.log(buf.length);
});

request庫使用時, gb2312、GBK中文亂碼解決方法

/**
 * [@param](/user/param) url 需要抓取的url地址
 * [@param](/user/param) calback
 */
function fetchContent(url,calback){
    var req = request(url, {timeout: 10000, pool: false});
    req.setMaxListeners(50);
    req.setHeader('user-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')
        .setHeader('accept', 'text/html,application/xhtml+xml');

    req.on('error', function(err) {
        console.log(err);
    });
    req.on('response', function(res) {
        var bufferHelper = new BufferHelper();
        res.on('data', function (chunk) {
            bufferHelper.concat(chunk);
        });
        res.on('end',function(){
            var result = iconv.decode(bufferHelper.toBuffer(),'GBK');
            calback(result);
        });
    });
}

參考資料

https://cnodejs.org/topic/53142ef833dbcb076d007230


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM