Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get/set file encoding with javascript's FileReader

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

like image 213
kmitov Avatar asked Sep 16 '12 16:09

kmitov


1 Answers

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.

like image 118
Florian Parain Avatar answered Sep 25 '22 09:09

Florian Parain