如何从 JavaScript 中的 .csv 文件中读取特殊字符
How to read special characters from .csv files in JavaScript
我想阅读包含特殊字符(波兰语)的 .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 类型之一。接收类型对象
如何处理?
首先我认为 ł 是一个 utf-8。
试试在浏览器中打印出来,可能是控制台让它看起来像这样
好的,我找到了一个简单的解决方案。
我创建了函数
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编码保存文件。
我想阅读包含特殊字符(波兰语)的 .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 类型之一。接收类型对象
如何处理?
首先我认为 ł 是一个 utf-8。
试试在浏览器中打印出来,可能是控制台让它看起来像这样
好的,我找到了一个简单的解决方案。
我创建了函数
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编码保存文件。