FileReader - 支持哪些编码?
FileReader - which encodings are supported?
想要简单地将用户输入的文件读取为文本。
可以依赖现代浏览器的使用,所以我为此使用了 FileReader(效果很好)。
reader.readAsText(myfile, encoding);
我知道 encoding
默认为 UTF-8。
但是由于我的用户会从各种来源(Windows、Mac、Linux)和各种浏览器上传文件,因此我要求用户通过 [=64] 提供编码=] 盒子.
例如对于西欧 windows 文本文件,我希望用户选择例如windows-1252.
我找不到 FileReader 支持的编码列表(假设这至少取决于浏览器)。
我不是要自动确定编码,我只是想以如下方式填充我的 select 框:
<select id="encoding">
<option value="windows-1252">Windows (Western Latin)</option>
<option value="utf-8">UTF-8</option>
<option value="...">...</option>
</select>
所以我的问题是:
- 从哪里可以获得支持的编码列表来填充选项值?
- 如何确定这些值的确切写法(是 'utf8' 还是 'UTF-8' 或...)以及那些取决于 OS / 浏览器?
- 如果不支持编码,readAsText(myfile, unsupportedEncoding) 会抛出任何我可以捕捉到的错误吗?
我不想为此使用任何主要的第 3 方库。
加分题:
是否有一种简单的方法来获得有意义的值翻译,例如cp10029表示Mac(中欧)?
- 编码标准 - https://github.com/whatwg/encoding/ (in JSON format - https://github.com/whatwg/encoding/blob/master/encodings.json。使用字段 "labels")
中的值
编码参数不区分大小写
不,readAsText(myfile, unsupportedEncoding) 不会抛出任何错误。该函数仅使用默认编码("utf8").
window.onload = function() {
//Check File API support
if (window.File && window.FileList && window.FileReader) {
var filesInput = document.getElementById("files");
filesInput.addEventListener("change", function(event) {
var files = event.target.files; //FileList object
var output = document.getElementById("result");
for (var i = 0; i < files.length; i++) {
var file = files[i];
//Only plain text
if (!file.type.match('plain')) continue;
var picReader = new FileReader();
picReader.addEventListener("load", function(event) {
var textFile = event.target;
var div = document.createElement("div");
div.innerText = textFile.result;
output.insertBefore(div, null);
});
//Read the text file
picReader.readAsText(file, "cP1251");
}
});
}
else {
console.log("Your browser does not support File API");
}
}
要获取值的翻译,您可以使用 JSON 文件 (https://github.com/whatwg/encoding/blob/master/encodings.json)、参数 "heading" 和 "name".
想要简单地将用户输入的文件读取为文本。
可以依赖现代浏览器的使用,所以我为此使用了 FileReader(效果很好)。
reader.readAsText(myfile, encoding);
我知道 encoding
默认为 UTF-8。
但是由于我的用户会从各种来源(Windows、Mac、Linux)和各种浏览器上传文件,因此我要求用户通过 [=64] 提供编码=] 盒子.
例如对于西欧 windows 文本文件,我希望用户选择例如windows-1252.
我找不到 FileReader 支持的编码列表(假设这至少取决于浏览器)。
我不是要自动确定编码,我只是想以如下方式填充我的 select 框:
<select id="encoding">
<option value="windows-1252">Windows (Western Latin)</option>
<option value="utf-8">UTF-8</option>
<option value="...">...</option>
</select>
所以我的问题是:
- 从哪里可以获得支持的编码列表来填充选项值?
- 如何确定这些值的确切写法(是 'utf8' 还是 'UTF-8' 或...)以及那些取决于 OS / 浏览器?
- 如果不支持编码,readAsText(myfile, unsupportedEncoding) 会抛出任何我可以捕捉到的错误吗?
我不想为此使用任何主要的第 3 方库。
加分题:
是否有一种简单的方法来获得有意义的值翻译,例如cp10029表示Mac(中欧)?
- 编码标准 - https://github.com/whatwg/encoding/ (in JSON format - https://github.com/whatwg/encoding/blob/master/encodings.json。使用字段 "labels") 中的值
编码参数不区分大小写
不,readAsText(myfile, unsupportedEncoding) 不会抛出任何错误。该函数仅使用默认编码("utf8").
window.onload = function() { //Check File API support if (window.File && window.FileList && window.FileReader) { var filesInput = document.getElementById("files"); filesInput.addEventListener("change", function(event) { var files = event.target.files; //FileList object var output = document.getElementById("result"); for (var i = 0; i < files.length; i++) { var file = files[i]; //Only plain text if (!file.type.match('plain')) continue; var picReader = new FileReader(); picReader.addEventListener("load", function(event) { var textFile = event.target; var div = document.createElement("div"); div.innerText = textFile.result; output.insertBefore(div, null); }); //Read the text file picReader.readAsText(file, "cP1251"); } }); } else { console.log("Your browser does not support File API"); } }
要获取值的翻译,您可以使用 JSON 文件 (https://github.com/whatwg/encoding/blob/master/encodings.json)、参数 "heading" 和 "name".