将Javascript BLOB编码更改为ANSI而不是UTF-8

将Javascript BLOB编码更改为ANSI而不是UTF-8,javascript,encoding,utf-8,blob,ansi,Javascript,Encoding,Utf 8,Blob,Ansi,我想知道是否可以用Javascript和ANSI编码的BLOB保存一个简单的txt文件 现在,我有一个脚本,它创建了一个带有CRLF行结尾的txt文件,但是使用UTF-8编码 可以用ANSI编码保存它吗?我需要这个来导入一个需要ANSI而不是UTF-8的“旧”windows程序上的txt文件 这是我使用的示例: 过去有一个选项使用从usvstring编码为任意编码,但这已从规范和浏览器中删除 您需要使用库来执行转换。在这里,我将使用: (异步()=>{ const text=`一些具有漂亮的

我想知道是否可以用Javascript和ANSI编码的BLOB保存一个简单的txt文件

现在,我有一个脚本,它创建了一个带有CRLF行结尾的txt文件,但是使用UTF-8编码

可以用ANSI编码保存它吗?我需要这个来导入一个需要ANSI而不是UTF-8的“旧”windows程序上的txt文件

这是我使用的示例:


过去有一个选项使用从usvstring编码为任意编码,但这已从规范和浏览器中删除

您需要使用库来执行转换。在这里,我将使用:

(异步()=>{
const text=`一些具有漂亮的行结尾\n和特殊字符(如é和ü)的文本,`;
常量编码='windows-1252';//a.k.a ANSI
常量编码器=新的文本编码器(编码{
非标准\u allowLegacyEncoding:true
});
const data=encoder.encode(text);//`data`是一个UINT8数组
const encoded_as_ANSI=新Blob([data]);
//仅供演示
const encoded_as_UTF8=新Blob([text]);
const ANSI_read=wait readAsText(编码为ANSI,编码);
const UTF8_read=等待读取文本(编码为_UTF8,编码);
console.log(“(ANSI)”,ANSI_read);
console.log(“(UTF8)”,UTF8\u读取);
})();
函数readAsText(blob,编码){
返回新承诺(res=>{
const reader=new FileReader();
reader.onload=e=>res(reader.result);
reader.readAsText(blob,编码);
});
}
window.textcoder=null;//强制安装polyfill
可能会回答您的问题-更改提示给浏览器的字符集/编码
let textFile = null;

function makeTextFile () {
    let text = `Some text with nice line endings\nand special characters like é and ü.`;

    const data = new Blob([text], {
        type: "text/plain",
        endings: "native"
    });

    if (textFile !== null) {
        window.URL.revokeObjectURL(textFile);
    }

    textFile = window.URL.createObjectURL(data);

    return textFile;
}