web-dev-qa-db-fra.com

Obtenir / définir l'encodage de fichier avec FileReader de javascript

Je me bats avec le problème suivant. En utilisant javascript, je voudrais changer le jeu de caractères d'un contenu de fichier et afficher ce contenu à l'utilisateur.

J'ai une entrée: formulaire de fichier. En cas de changement, je lis le contenu

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

Le fichier est dans Windows-1251. Je voudrais convertir le contenu du fichier en un autre encodage et ensuite le présenter à l'utilisateur.

Est-ce possible à réaliser avec javascript?

Cordialement

24
thebravoman

Si votre page HTML est en UTF-8 et votre fichier est en ISO-8859-1.

Cela fonctionne:

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

Je n'ai pas de fichier Windows-1251 donc je n'ai pas pu le tester mais il semble que le 'CP1251' soit pris en charge (par Google Chrome au moins), donc:

 reader.readAsText(file, 'CP1251');

Si rien de tout cela ne fonctionne. Ensuite, vous devez modifier la mise en forme manuellement. Malheureusement, je ne connais aucune bibliothèque JavaScript qui fasse l'affaire.

À partir du mappage unicode ici et de Delan Azabaniréponse , vous devriez réussir à construire une fonction qui convertit char par char votre chaîne de CP1251 en UTF -8.

43
Florian Parain