首页 > 解决方案 > 如何在 JavaScript 中从 .csv 文件中读取特殊字符

问题描述

我想阅读包含特殊字符(波兰语)的 .csv 文件。

我正在使用 ExcelJs 读取 .csv:

    var workbook = new Excel.Workbook();
    workbook.csv.readFile(uploadsPath + "/" + filename, {delimiter: ';'})
        .then(function (worksheet) {
            var worksheet = workbook.getWorksheet(1);

            console.log(worksheet.getRow(3).getCell(7).value);
        });
}

使用此代码,我得到的是“Wrocław”而不是“Wrocław”。

我尝试使用编码:

    var workbook = new Excel.Workbook();
    workbook.csv.readFile(uploadsPath + "/" + filename, {encoding: 'utf-16le'})
        .then(function (worksheet) {
            var worksheet = workbook.getWorksheet(1);

            console.log(worksheet.getRow(3).getCell(7).value);
        });
}

但是后来我收到了这个错误:

TypeError [ERR_INVALID_ARG_TYPE]:“buf”参数必须是 Buffer、TypedArray 或 DataView 类型之一。接收到的类型对象

如何处理?

标签: javascriptcsvutf-8exceljs

解决方案


好的,我找到了一个简单的解决方案。

我创建了函数

function changeEncoding(path) {
    var buffer = fs.readFileSync(path);
    var output = iconv.encode(iconv.decode(buffer, "win1250"), "utf-8");
    fs.writeFileSync(path, output);
}

我只是读取文件,并在iconv-lite的帮助下,首先从win1250解码,然后用utf-8编码保存文件。


推荐阅读