zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    hdu 5972 Regular Number
    hdu 5971 Wrestling Match
    福大软工 · BETA 版冲刺前准备(团队)
    福大软工 · 第十一次作业
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
  • 原文地址:https://www.cnblogs.com/flowerszhong/p/6021459.html
Copyright © 2011-2022 走看看