Get/set file encoding with javascript's FileRe

2019-02-03 02:00发布

问题:

I am struggling with the following problem. Using javascript I would like to change the character set of a file content and display this content to the user.

I have an input:file form. On change I am reading the content

$('#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);
})

The file is in Windows-1251. I would like to convert the content of the file to another encoding and after that present it to the user.

Is this possible to achieve with javascript?

Regards

回答1:

If your HTML page is in UTF-8 and your file is in ISO-8859-1.

This is working:

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

I don't have any Windows-1251 file so I was not able to test it but it looks like that the 'CP1251' is supported (by Google Chrome at least), so:

 reader.readAsText(file, 'CP1251');

If none of this is working. Then you should change the formatting manually. Unfortunately, I am not aware of any JavaScript library that does the trick.

From the unicode mapping here and from Delan Azabani answer, you should manage to build a function that convert char by char your string in CP1251 to UTF-8.