IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

FSO - OpenTextFile et encodage de caractères UTF-8


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut FSO - OpenTextFile et encodage de caractères UTF-8
    Bonsoir à tous

    Après avoir passé 3 soirées sur ce problème, je me permets de vous demander de l'aide !

    J'ai un fichier saisie.html qui contient un formulaire HTML avec du javascript qui me permet d'alimenter un fichier ig.csv grâce à OpenTextFile.

    Extrait de mon fichier saisie.html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <script charset="UTF-8">
     
    function ecrire_fichier() {
     
     
    var file = new ActiveXObject("Scripting.FileSystemObject");
     
    var a=file .OpenTextFile("\\\\FREEBOX\\Disque dur\\Tableau\\ig.csv",8 ,true);
     
    var texte = "";
    var ligne = "\n";
     
    var fso = new ActiveXObject("Scripting.FileSystemObject");
     
     
        if(!document.getElementById("date_inc").value ) {alert("Indiquer la date.");a.Close();return false;}
        if(!document.getElementById("appli_inc").value ) {alert("Indiquer le nom de l'application concernee.");a.Close();return false;}
        if(!document.getElementById("no_inc").value ) {alert("Indiquer le n° de l'incident.");a.Close();return false;}
     
        a.WriteLine(ligne);
        texte += document.getElementById("date_inc").value;
        texte += ","
     
        var selectElmt = document.getElementById("scte_inc");
        texte += selectElmt.options[selectElmt.selectedIndex].value;
     
        texte += ","
        texte += document.getElementById("appli_inc").value;
        texte += ","
     
        texte += document.getElementById("no_inc").value;
        texte += ","
     
        var selectElmt = document.getElementById("etat_inc");
        texte += selectElmt.options[selectElmt.selectedIndex].value;
     
    a.WriteLine(texte);
    a.Close();
     
    alert("Saisie effectuée !");
    document.forms['formulaire'].reset();
     
    }
     
    </script>

    Lorsque le formulaire HTML est validé, le fichier ig.csv est incrémenté. Seulement voilà, lorsque l'on saisi des caractères spéciaux (accents), ceux-ci sont mal encodés. A noter que ma page HTML affiche correctement les accents.

    Le fichier .CSV est correctement enregistré en UTF-8, lorsque je le modifie manuellement, aucun problème d'affichage ! Par contre lorsque je passe par mon script saisie.html... patatra !

    Pourriez-vous me venir en aide ? Merci beaucoup !

    Excellente soirée.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    as tu mis au moins un <meta charset="utf-8"> à ton document ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut
    Salut NoSmoking, merci pour ta réponse.
    Oui, la balise meta utf8 est présente dans le HEAD de ma page HTML. Les accents qui se trouvent sur la page passent très bien.
    Le problème se situe au niveau du javascript qui va enregistrer les informations dans le fichier .csv.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    as tu essayé de jouer sur le dernier paramètre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var a=file .OpenTextFile("\\\\FREEBOX\\Disque dur\\Tableau\\ig.csv",8 ,true, 1);
    Citation Envoyé par msdn
    object.OpenTextFile(filename[, iomode[, create[, format]]]).
    format Optional. One of three Tristate values used to indicate the format of the opened file. If omitted, the file is opened as ASCII.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut
    Je viens d'essayer avec toutes les valeurs possible (-2 -1 ou 0) comme indiqué ici : https://msdn.microsoft.com/en-us/lib...=vs.84%29.aspx rien n'y fait malheureusement

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Le peu de tests que je viens de faire ne fait apparaître aucune erreur de prise en compte des accents !?!

    A voir la possibilité d'un problème de BOM sur ton fichier saisie.html !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut
    Salut NoSmoking, j'avoue ne pas comprendre, tous les fichiers sont bien encodés en UTF-8.
    J'ai préféré contourner ce problème en ajoutant un onkeyup= et un onblur= ainsi qu'un Javascript qui empêche la saisie de caractères accentués dans mon formulaire.

    Je considère le topic comme "résolu", je te remercie du temps passé à m'avoir aidé. Excellente journée.

  8. #8
    Membre chevronné
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Par défaut
    Bonjour, je sais bien que la discussion est résolue mais il subsiste une incompréhension.

    Citation Envoyé par Number0 Voir le message
    tous les fichiers sont bien encodés en UTF-8
    J'en doute.

    ECMAScript (Javascript) gère les chaines de caractères en UTF-16 uniquement. Le contrôle ActiveX que tu utilises supporte l'ASCII (TristateFalse) et l'Unicode (TristateTue) en UTF-16. On ne peut donc écrire avec ce contrôle que de l'ASCII ou de l'UTF-16.

    Si ce fichier est affiché avec un encodage en UTF-8 c'est normal qu'il y ait un problème d'affichage des caractères accentués ou autres. Il suffit donc de l'afficher avec le bon encodage.

    NB: le charset UTF-8 spécifié dans la balise script ou au niveau du document ne change absolument rien ni à la gestion des chaines de caractères ECMAScript, ni au fonctionnement du contrôle ActiveX.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Encodage de caractères, pb utf-8/iso
    Par fred64 dans le forum Flash
    Réponses: 2
    Dernier message: 22/06/2006, 16h59
  2. Réponses: 15
    Dernier message: 24/02/2006, 14h17
  3. [FLASH 8] Encodage de caractères...
    Par Xdrei dans le forum Flash
    Réponses: 1
    Dernier message: 24/02/2006, 07h44
  4. encodage de caractères
    Par hugo123 dans le forum Langage
    Réponses: 7
    Dernier message: 25/01/2006, 15h04
  5. Encodage de chaine -> UTF-8
    Par klarky88 dans le forum MFC
    Réponses: 2
    Dernier message: 26/05/2005, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo