hjxhjxjx 发表于 2024-6-21 12:41

原生前端js如何转换文件字符串编码

本帖最后由 hjxhjxjx 于 2024-6-21 12:42 编辑

有个需求,从本地上传txt之类的文本文件,读取里面的内容为字符串,如何将字符串(未知编码)转换成utf-8?(网页使用utf-8)
比如以下这个例子:
<meta charset="utf-8">
<body>
    <input type="file" id="fileInput" accept=".txt">
    <button id="btn_input">导入</button>
</body>
<script>
function input(){//导入文件
    const file = document.getElementById("fileInput").files;
    if (!file) {
      alert("没有文件");
      return;
    }
    const reader = new FileReader();
    reader.onload = function () {
      const str = reader.result;
      //调整str的编码
    };
    reader.readAsText(file,"UTF-8");
}
</script>
如果是ansi的txt文件,就中文乱码了

亡心胜利之剑 发表于 2024-6-21 14:24

// 假设file是一个File对象,通过input选择的文件
const reader = new FileReader();

reader.onload = function(event) {
    const fileContent = event.target.result; // 这是读取的原始内容(UTF-16编码)
   
    // 接下来,将原始内容转换为UTF-8编码的字符串
    const utf8String = convertToUTF8(fileContent);
   
    // 这里可以处理转换后的UTF-8编码字符串
    console.log(utf8String);
};

reader.readAsText(file);

function convertToUTF8(str) {
    const encoder = new TextEncoder();
    return encoder.encode(str);
}

涛之雨 发表于 2024-6-21 18:48

ascii编码中没有汉字,实际编码可能应该是gbk
页: [1]
查看完整版本: 原生前端js如何转换文件字符串编码