FileReader et caractères accentués - Javascript/Node.js - Programmation
MarshPosté le 11-12-2019 à 06:54:31
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
Message édité par Harkonnen le 16-12-2019 à 20:48:30
Marsh Posté le 11-12-2019 à 06:54:31
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
Message édité par Harkonnen le 16-12-2019 à 20:48:30