无法将csv文件字符集更改为windows-1251



我试图创建一个按钮来下载csv文件。我必须使用windows-1251字符集制作文件。但无论我做什么,这个文件最终都被保存在utf-8中。现在我正在尝试类似的东西:

async createCsv(result) {
const arrData = result.data
const aliases = result.aliases

let csvContent = [
Object.keys(arrData[0]).map(item => aliases[item]).join(";"),
...arrData.map(item => Object.values(item).join(";"))
]
.join("n")
.replace(/(^[)|(]$)/gm, "");

const data = new Blob([csvContent], {
type: "text/csv;charset=windows-1251;"
});

const link = document.createElement("a");
link.setAttribute("href", URL.createObjectURL(data));
link.setAttribute("download", (new Date).toLocaleString() + ".csv");
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}

文件在utf-8中。有办法更改字符集吗?

查找相同的最后一天。这才是真正有效的答案转换为8位cp1251或cp1252 的blob

在我的项目中最终得到了以下

import * as iconv from 'iconv-lite'
let outdata = this.bankf.getOutputFile();
const encoded = iconv.encode (outdata,'win1251');
var file = new Blob ([encoded], {type: 'text/plain;charset=windows-1251'});
var link = document.createElement("a");
var url = URL.createObjectURL(file);
link.setAttribute("href", url);
link.setAttribute("download", "filename.txt");
document.body.appendChild(link);
link.click();
setTimeout(function() {document.body.removeChild(link); window.URL.revokeObjectURL(url); }, 0);                

仍在寻找其他解决方案,因为iconv带来了大约400kb的代码,但目前为止。至少它能

最新更新