我使用角度7+,我有一个简单的功能来上传文件和阅读他们的内容,但我想知道如何识别文档内容的编码,只允许编码utf-8的文件。
async uploadFile(event) {
var document;
var reader = new FileReader();
let file = event.target.files[0];
reader.onload = ((file: any) => {
return (e: any) => {
document.description = e.srcElement.result;
document.title = title;
document.fileName = file.name;
}
})(file);
reader.readAsText(file);
}
谢谢。
instanceOfFileReader.readAsText(blob [,encoding]);
要确保上载的文件是UTF-8,请执行以下操作:
instanceOfFileReader.readAsText(blob, 'UTF-8');
知道UTF-8是默认设置,所以它应该工作,你也可以这样做:
instanceOfFileReader.readAsText(blob);
如果编码不是UTF-8,则读取失败。考虑到this作为规范性文件,我没有看到任何关于这方面的文件。
您应该尝试上传具有其他编码的文件以确保它。
在encoding
文档中没有名为FileReader的属性或任何类似的属性
没有防弹技术来获取文本文件的编码。无论如何,一个名为jschardet的库试图实现这个目标。
function read(f) {
var reader = new FileReader();
reader.readAsText(f);
reader.onload = function(e) {
console.log(jschardet.detect(reader.result))
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jschardet/2.1.0/jschardet.min.js"></script>
<input type="file" onchange="read(this.files[0])"></input>