【问题标题】:Convert CSV-stream to UTF-8 in Node.js在 Node.js 中将 CSV 流转换为 UTF-8
【发布时间】:2017-08-21 07:57:21
【问题描述】:

提前我不得不说我是 node.js 的新手,可能还没有完全理解它。

我现在陷入了一个我无法解决的相当明显的问题。我正在通过节点模块“ftp”从 FTP 服务器导入 CSV 文件 然后我将文件作为流接收,然后使用节点模块“csvtojson”将其转换为 JSON。

到目前为止,效果非常好。但是现在我注意到我偶然发现了一些来自德语的 Umlaut 字符,这些字符不断使我的解决方案崩溃。我发现我必须将文件流转换为 UTF8,但我不知道如何。

我已经用toString() 方法和其他几个节点模块尝试过,但也没有用。

我的代码如下所示:

getCsvFromFtp: function (profile) {
    init(profile);
    return new Promise((resolve, reject) => {
        client.on('ready', function () {
            client.get(file, function (err, stream) {
                if (err) {
                    return reject(err);
                }
                stream.once('close', () => {
                    client.end();
                });
                csv({
                    trim: true,
                    delimiter: delimiter,
                }).fromStream(stream, (err, result) => {
                    if (err) {
                        return reject(err);
                    }
                    return resolve(csvFormatterService.groupAndFormatOrders(result));
                });
            });
        });
        client.connect(ftpCredentials);
    });
}

编辑: 我发现问题不是我的代码,而是文件的编码。该文件采用西方 (ISO 8859-1) 编码。

【问题讨论】:

    标签: javascript node.js csv utf-8 ftp


    【解决方案1】:

    您可以使用 npm 中的 utf8 module 对字符串进行编码/解码。

    您可以使用的另一种解决方案是:

    convertString = JSON.parse(JSON.stringify(convertString));
    

    希望对你有所帮助。

    【讨论】:

    • 我用你建议的第二个试了一次。但是我收到了这个错误:TypeError: Converting circular structure to JSON 现在我试试这个模块。我让你更新。到目前为止谢谢你:)
    • 你可以查看这个链接stackoverflow.com/questions/4816099/…来解决这个问题,因为你的对象的结构是圆形的,或者只是坚持使用utf8模块。
    • 所以我现在用这个模块试了一下。然后我得到结果:k�chen 没有它我得到:k�chen 而我想要得到的是:küchen 我不确定我是否在正确的路上使用 utf8 :S.
    • 德语字符通常使用 UTF-8,因为它们使用 ISO/IEC 8859-15,您可以尝试使用 UTF-16 甚至 UTF-32。
    • 好的。我解决了。再次查看所有文件后(我几乎要疯了),我意识到其他客户的一些文件有效。原因:不工作的文件是 ISO 8859-1 编码的......所以我要告诉一位客户用 UTF-8 编码他的文件:P 谢谢
    猜你喜欢
    • 2019-02-10
    • 2015-11-30
    • 2012-06-30
    • 2017-12-08
    • 2011-08-08
    • 2018-06-21
    • 1970-01-01
    • 2022-01-10
    • 2015-10-08
    相关资源
    最近更新 更多