Але*_*вич 5 html javascript character-encoding
我想读取用户的文件并给他该文件的修改版本。我使用带有类型文件的输入来获取文本文件,但是如何获取加载文件的字符集,因为在不同情况下它可能会有所不同...上传的文件具有 .txt 或类似格式,而不是 .html :)
var handler = document.getElementById('handler');
var reader = new FileReader();
handler.addEventListener('click', function() {
reader.readAsText(firstSub.files[0], /* Here I need use a correctly charset */);
});
reader.addEventListener("loadend", function() {
console.dir(reader.result.split('\n'));
});
Run Code Online (Sandbox Code Playgroud)
就我而言(我制作了一个小型网络应用程序,它接受字幕 .srt 文件并删除时间代码和换行符,从而生成可打印文本),足以预见 2 种编码类型:UTF-8 和 CP1251(在所有情况下我尝试使用拉丁字母和西里尔字母 \xe2\x80\x93 \xe2\x80\x93 这两种类型就足够了)。首先我尝试使用UTF-8进行编码,如果不成功,一些字符会被'\xef\xbf\xbd'符号替换。因此,我检查结果是否存在这些迹象,如果发现,则使用 CP1251 编码重复该过程。所以,这是我的代码:
\nfunction onFileInputChange(inputDomElement, utf8 = true) {\n const file = inputDomElement.files[0];\n const reader = new FileReader();\n reader.readAsText(file, utf8 ? 'UTF-8' : 'CP1251');\n reader.onload = () => {\n const result = reader.result;\n if (utf8 && result.includes('\xef\xbf\xbd')) {\n onFileInputChange(inputDomElement, false);\n console.log('The file encoding is not utf-8! Trying CP1251...');\n } else {\n document.querySelector('#textarea1').value = file.name.replace(/\\.(srt|txt)$/, '').replace(/_+/g, '\\ ').toUpperCase() + '\\n' + result;\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
10173 次 |
| 最近记录: |