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

  • 相关阅读:
    jQuery插件主要有两种扩展方式
    系统负载测试工具-LoadRunner
    安全扫描工具-AppScan
    newinstance()和new有什么区别?(转)
    类的加载、连接和初始化 (转)
    tar 基础
    了解【重放攻击】
    DDLDMLDCLDQL
    web.xml的配置问题
    组合与聚合
  • 原文地址:https://www.cnblogs.com/flowerszhong/p/6021459.html
Copyright © 2011-2022 走看看