CNode

请问怎样把UTF-8的字符串 转化为GBK

问答
Bbob-baohai发布于11 年前最后回复11 年前5 回复11643 浏览0 收藏

我在程序中使用了 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)

A
alsotang#1·11 年前

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

X
XadillaX#2·11 年前

iconv-lite.

B
bob-baohai#3·11 年前
引用 alsotang不要 toString()。直接把 Buffer send 出去

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

B
bob-baohai#4·11 年前
引用 XadillaXiconv lite.

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

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

X
XadillaX#5·11 年前
/**
 * 下载字典
 * @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);
    });
};

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

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

参与回复
登录后即可参与回复。登录