使用 javascript 的 FileReader 获取/设置文件编码

Posted

技术标签:

【中文标题】使用 javascript 的 FileReader 获取/设置文件编码【英文标题】:Get/set file encoding with javascript's FileReader 【发布时间】:2012-09-09 00:57:22 【问题描述】:

我正在努力解决以下问题。使用 javascript 我想更改文件内容的字符集并将此内容显示给用户。

我有一个输入:文件表单。在更改时,我正在阅读内容

$('#form input:file').change(function(event)                   
   file = this.files[0];
   reader = new FileReader();
   reader.onload = function(event) 
      result = event.target.result.replace(/\n/g,'<br />');
      $('#filecontents').html(result);
   );
   reader.readAsText(file);
)

该文件位于 Windows-1251 中。我想将文件的内容转换为另一种编码,然后将其呈现给用户。

这可以用javascript实现吗?

问候

【问题讨论】:

【参考方案1】:

如果您的 HTML 页面采用 UTF-8 且您的文件采用 ISO-8859-1。

这是有效的:

 reader.readAsText(file, 'ISO-8859-1');

我没有任何 Windows-1251 文件,因此无法对其进行测试,但看起来“CP1251”受支持(至少 Google Chrome 支持),所以:

 reader.readAsText(file, 'CP1251');

如果这些都不起作用。然后您应该手动更改格式。不幸的是,我不知道有任何 JavaScript 库可以做到这一点。

从 unicode 映射 here 和 Delan Azabani answer,您应该设法构建一个函数,将 CP1251 中的字符串逐字符转换为 UTF-8。

【讨论】:

关于你的最后一句话,不是有一个“标准”函数可以将 ISO-8859-1 字符串转换为 UTF-8 吗? 我用 Shift-JIS 文件尝试了这个,如下所示:reader.readAsText(f, "Shift-JIS");转换为 UTF-8 就好了。但现在的问题是如何检测传入的文件是用 Shift-JIS 编码的......因为如果我尝试将 UTF-8 编码的文件发送到该函数中,它似乎无法正确转换。

以上是关于使用 javascript 的 FileReader 获取/设置文件编码的主要内容,如果未能解决你的问题,请参考以下文章

一次性预览多张图片时遇到的问题

今天课堂总结

java创建文本文件读文件写文件

软件测试实验二

Java学生信息增删改查(并没用数据库)

转换sql文件的create table语句为drop table语句