请问怎样把UTF-8的字符串 转化为GBK
发布于 10 年前 作者 bob-baohai 11100 次浏览 最后一次编辑是 8 年前 来自 问答

我在程序中使用了 iconv这个模块做编码转换的,我发现GBK转 UTF-8可以,但反过来就不行了!求大神指点~ 下边是我的测试代码:

var Iconv  = require('iconv').Iconv;
test: function(req, res) {
    res.setHeader('Content-Type', 'text/html; charset=GBK');
    var outputStrng = "主机编号,产品编号,批次号,生产日期,出库日期,销售地,购机日期\n";

    var iconv = new Iconv('UTF-8', 'GBK//IGNORE');
    outputStrng = iconv.convert(outputStrng).toString();
    res.send(outputStrng);
}
5 回复

不要 toString()。直接把 Buffer send 出去

@alsotang 能给下具体代码吗?新手学习中!

@xadillax 这个的确可以!反正我是跳过一个坑还有下一个坑,其实我场景是将数据通过csv导出!现在编码可以转化了,因为我前端是用的Angularjs,因为ajax 是不能直接下载文件的!所以我用了FileSaver.js 这个东东,但不知道为什么从服务器发送过来的已经是GBK了,但通过这货生成文件时,还是乱码的!奔溃中!

var blob = new Blob([response], {type: “text/plain;charset=gb18030”}); saveAs(blob, “test.csv”);

/**
 * 下载字典
 * @param req
 * @param resp
 */
exports.download = function(req, resp) {
    var name = req.param("name");
    helper.dict.toCSV(name, function(err, str) {
        if(err) {
            return resp.renderError("导出失败:" + err.message);
        }
        var buf = iconv.encode(str, "GBK");
        resp.type("application/x-csv");
        resp.set("content-disposition", "attachment; filename=\"Dictionary.csv\"");
        resp.send(200, buf);
    });
};

摘自我以前一个项目的代码。

至于前端——我是前端渣。

回到顶部