Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2455 connectés 

  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [Resolu] FileReader et caractères accentués

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu] FileReader et caractères accentués

n°2259793
fugacef
Posté le 06-06-2015 à 11:43:23  profilanswer
 

Bonjour tout le monde,
 
Je débute en javascript et j'ai un gros problème que je n'arrive pas à résoudre seul. Mon programme récupère un fichier entré par l'utilisateur via un <input type="file" id="fileInput"> dans mon fichier html, et ensuite je parse son contenu dans un script JS.
 
Je récupère son contenu en passant par un FileReader de la manière suivante :
 
var reader = new FileReader();
reader.onload = function(e) {
    var contents = reader.result;
    parseFile(contents);
}
reader.readAsText(file);

 
Tout ceci marche très bien sans caractères accentués. Mais quand j'ajoute des caractères accentués, la variable reader.result contient des caractères non-reconnus. Peu importe que je l'affiche via la fonction alert(), directement sur la page html ou encore que je la teste via un expression régulière. Alors que pourtant, en écrivant en dur dans mon fichier JS ou HTML des caractères accentués, ils sont bien affichés à l'écran et match bien les expressions régulière. C'est logique étant donné que ces deux fichiers sont encodés en UTF-8 et que j'ai la balise <meta charset="utf-8"> dans le fichier HTML. Pourtant, le fichier txt que j'utilise est lui aussi encodé en UTF-8 (je l'ai vérifié via Notepad++), mais rien n'y fait, je n'arrive à afficher son contenu avec accents correctement.
 
La fonction reader.readAsText prend en argument également l'encodage, et par défaut c'est l'UTF-8. J'ai ajouté le 2e argument en précisant 'UTF-8' mais pas d'amélioration.
 
Vous avez une idée de ce que j'ai pu oublier ?
 
Merci par avance :jap:
 
Edit : je précise que je suis sur la dernière version de Chrome.


Message édité par fugacef le 07-06-2015 à 18:12:11
mood
Publicité
Posté le 06-06-2015 à 11:43:23  profilanswer
 

n°2259796
SICKofitAL​L
misanthrope
Posté le 06-06-2015 à 14:45:52  profilanswer
 

Selon cette doc : https://developer.mozilla.org/en-US [...] readAsText
readAsText prendrait un second param qui est l'encodage, ceci dit par défaut ca serait utf-8 :/
As-tu essayé sur une autre browser ? En googlant, je suis tombé sur des rapports de bug concernant l'implémentation de cette méthode dans Chrome.


Message édité par SICKofitALL le 06-06-2015 à 14:47:37

---------------
We deserve everything that's coming...
n°2259797
SICKofitAL​L
misanthrope
Posté le 06-06-2015 à 15:07:23  profilanswer
 

J'ai testé sous FF41 et Chromium 45 ca fonctionne.
Sous Notepad++, converti tes fichiers en UTF8 sans BOM, en cas où.
 
Testé avec ce code :

Code :
  1. <input type="file" id="files" name="files[]" multiple />
  2. <output id="list"></output>
  3. <script>
  4. function handleFileSelect (e)
  5.  {
  6.   var
  7.    files = e.target.files,
  8.    reader = new FileReader ();
  9.   reader.onload = function (e)
  10.   {
  11.    var contents = reader.result;
  12.    console.log (contents);
  13.    alert (contents);
  14.   }
  15.   reader.readAsText (files[0]);
  16.  }
  17. document.getElementById ('files').addEventListener ('change', handleFileSelect, false);
  18. </script>


---------------
We deserve everything that's coming...
n°2259820
fugacef
Posté le 06-06-2015 à 22:58:05  profilanswer
 

Je deviens fou... Je viens de tester ton code avec un fichier .txt contenant juste "é", et il me l'affiche avec un charactère non reconnu. Sur chrome 43 et FF 38 (ce sont des betas que tu as ?). :pfff:

n°2259824
SICKofitAL​L
misanthrope
Posté le 06-06-2015 à 23:44:41  profilanswer
 

Oui, c'est des beta/nightly
Mes fichiers sont tous en utf8 sans BOM (le script et les fichiers lus)


---------------
We deserve everything that's coming...
n°2259828
fugacef
Posté le 07-06-2015 à 00:23:41  profilanswer
 

SICKofitALL a écrit :

Oui, c'est des beta/nightly
Mes fichiers sont tous en utf8 sans BOM (le script et les fichiers lus)


Pareil mes fichiers sont en utf8 sans BOM. Ca m'a l'air plutôt magique cette histoire :o

n°2259844
fugacef
Posté le 07-06-2015 à 18:10:57  profilanswer
 

J'ai lu quelque part que la science de Notepad++ n'était pas exacte, qu'il devinait l'encodage plus qu'autre chose. Du coup, et j'aurais du commencer par ça, j'enregistre mes fichiers txt avec le bloc-note en précisant bien l'encodage, et miracle ça marche :o Bref, mission accomplie :jap: Merci de ton aide


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Javascript/Node.js

  [Resolu] FileReader et caractères accentués

 

Sujets relatifs
Concaténer deux chaines de caractèresPattern qui exclut les caractères avant un point
[Résolu] Caractères accentués dans formulaire d'envoi de mail.[VBA] Inserer des caractères en décaler dans une cellule
Envoi de mails avec SMTP problème avec caractères spéciauxProgramme C qui affiche les caractères saisis par l'utilisateur
Import .csv choix jeu de caractèresproblème avec les caractères spéciaux quote/addslashes insertion MySQL
[Batch] Modification d'une chaîne de caractères dans un txt zippé 
Plus de sujets relatifs à : [Resolu] FileReader et caractères accentués


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR