我尝试通过javascript导入CSV文件。但是编码是错误的。 “ä,ö,ü等”可能是通过ANSI而不是UTF-8导入的。
CSV文件是我以前导出的,在那里我设法将编码设置为UTF-8。但是我无法正确导入。谁能告诉我该如何导入?
为说明当前问题:
导出格式:
Männlich; Sehr geehrter; Per Sie; Dr.;Jürgen;Böhler; juergen.boehler@example.com
导入格式:
Männlich; Sehr geehrter; Per Sie; Dr.;Jürgen;Böhler; juergen.boehler@example.com
导出功能
function csv() {
const rows = [[geschlecht[0].value, anrede[0].value, umgangsform[0].value, titel[0].value, vorname[0].value,nachname[0].value,email[0].value ]];
var universalBOM = "\uFEFF";
var csvContent = '';
rows.forEach(function(rowArray){
let row = rowArray.join(";");
csvContent += row + "\r\n";
for (i = 1; i < titel.length; i++) {
csvContent += geschlecht[i].value + ';' + anrede[i].value + ';' + umgangsform[i].value + ';' + titel[i].value + ';' + vorname[i].value + ';' + nachname[i].value + ';' + email[i].value + "\r\n";
}
});
var link = document.createElement("a");
link.setAttribute("href", "data:text/csv;charset=utf-8," + encodeURIComponent(universalBOM+csvContent));
link.setAttribute("download", "export.csv");
document.body.appendChild(link); // Required for FF
link.click(); // This will download the data file named "export.csv".
}
导入功能
function readBlob(opt_startByte, opt_stopByte) {
var files = document.getElementById('files').files;
if (!files.length || !((files[0].name).endsWith(".csv"))) {
alert('Bitte eine .csv-Datei auswählen!');
return;
}
var file = files[0];
var start = parseInt(opt_startByte) || 0;
var stop = parseInt(opt_stopByte) || file.size - 1;
var reader = new FileReader();
// If we use onloadend, we need to check the readyState.
reader.onloadend = function(evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
document.getElementById('textareaMails').value += evt.target.result;
}
};
var blob = file.slice(start, stop + 1);
reader.readAsBinaryString(blob);
}
document.querySelector('.readBytesButtons').addEventListener('click', function(evt) {
if (evt.target.tagName.toLowerCase() == 'button') {
var startByte = evt.target.getAttribute('data-startbyte');
var endByte = evt.target.getAttribute('data-endbyte');
readBlob(startByte, endByte);
}
}, false);