FileReader et caractères accentués [Resolu] - Javascript/Node.js - Programmation
Marsh Posté le 06-06-2015 à 14:45:52
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.
Marsh Posté le 06-06-2015 à 15:07:23
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 :
|
Marsh Posté le 06-06-2015 à 22:58:05
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 ?).
Marsh Posté le 06-06-2015 à 23:44:41
Oui, c'est des beta/nightly
Mes fichiers sont tous en utf8 sans BOM (le script et les fichiers lus)
Marsh Posté le 07-06-2015 à 00:23:41
SICKofitALL a écrit : Oui, c'est des beta/nightly |
Pareil mes fichiers sont en utf8 sans BOM. Ca m'a l'air plutôt magique cette histoire
Marsh Posté le 07-06-2015 à 18:10:57
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 Bref, mission accomplie Merci de ton aide
Marsh Posté le 06-06-2015 à 11:43:23
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
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