原生前端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文件,就中文乱码了 // 假设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);
} ascii编码中没有汉字,实际编码可能应该是gbk
页:
[1]