V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
picasso250
V2EX  ›  Node.js

提问:iconv 和 iconv-lite 都不能正确解码,一定是我姿势不对。

  •  
  •   picasso250 · 2014-02-09 17:31:32 +08:00 · 7026 次点击
    这是一个创建于 4030 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想要正确解码
    http://www.esgweb.net/Html/Yxzcpstj/10.htm

    代码
    var request = require('request');
    var cheerio = require('cheerio');
    var Iconv = require('iconv').Iconv;
    var iconv = require('iconv-lite');
    var i = 10;
    var url = 'http://www.esgweb.net/Html/Yxzcpstj/'+i+'.htm';
    console.log(url);
    request(url, function(err, resp, body) {
    if (err)
    throw err;
    // did not work
    $ = cheerio.load(iconv.decode(body, 'gbk'));
    console.log($('body').text());
    // did not work either
    var converter = new Iconv('GB2312', 'UTF-8');
    var utf8_buffer = converter.convert((body));
    console.log(utf8_buffer.toString());
    });
    view raw fetch.js hosted with ❤ by GitHub
    <?php
    // it works!
    $ch = curl_init('http://www.esgweb.net/Html/Yxzcpstj/10.htm');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $body = curl_exec($ch);
    echo($body);
    echo iconv('gbk', 'utf8', $body);
    view raw fetch.php hosted with ❤ by GitHub
    4 条回复    1970-01-01 08:00:00 +08:00
    turing
        1
    turing  
       2014-02-09 17:38:54 +08:00   ❤️ 1
    https://npmjs.org/package/gbk

    我写了一个包装,以防自己忘记怎么 encode 和 decode GBK 编码的网页。你可能用的着。
    YuHong
        2
    YuHong  
       2014-02-09 22:06:54 +08:00 via iPhone   ❤️ 1
    request 默认编码是utf8
    request({
    encoding: null,
    uri:uri
    }, callback)
    sxd
        3
    sxd  
       2014-02-10 09:39:14 +08:00
    encoding: null 必须的
    picasso250
        4
    picasso250  
    OP
       2014-02-10 15:18:03 +08:00
    @YuHong 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2847 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:20 · PVG 11:20 · LAX 19:20 · JFK 22:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.