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

Entrée/Sortie Java Discussion :

[Création d'un fichier] Pb d'encoding


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Par défaut [Création d'un fichier] Pb d'encoding
    Bonjour,

    j'essaie de créer un fichier utf-8, en java :
    [COD
    E]
    File generate = new File(dir + "/", nomFichier);
    generate.createNewFile();

    OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(generate), "UTF-8");
    PrintWriter pw = new PrintWriter(new BufferedWriter(writer));
    pw.write(new String(contenu.getBytes(), "UTF-8"));
    pw.close();
    [/CODE]

    Lorsque j'ouvre le fichier avec nodePad, et que je fais enregistrer-sous, l'encode est ANSI et non UTF-8, comment cela se fait-il ?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par aldo-tlse Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pw.write(new String(contenu.getBytes(), "UTF-8"));
    Je suis pas sûr de comprendre la logique de cette ligne.

    Citation Envoyé par aldo-tlse Voir le message
    Lorsque j'ouvre le fichier avec nodePad, et que je fais enregistrer-sous, l'encode est ANSI et non UTF-8, comment cela se fait-il ?
    Bah, tu sais, un fichier texte n'indique nulle part en quoi il est encodé... Comment notepad est-il censé savoir que tu avais en tête de l'UTF-8 quand tu as créé ce fichier ?

    (Si c'est au BOM que tu penses, Java n'en met pas automatiquement en UTF-8. Il faut donc commencer le fichier par le caractère '\ufeff')
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Citation Envoyé par thelvin Voir le message
    ..., Java n'en met pas automatiquement en UTF-8. Il faut donc commencer le fichier par le caractère '\ufeff'
    Essaye de rajouter ça au début du fichier avec un pw.write('\ufeff').

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Par défaut
    merci pour cette remarque, ca fonctionne bien maintenant !!

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Vérifie que Charset.forName("UTF-8") ne retourne pas null dans ta JVM.
    A++

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Par défaut
    System.out.println(Charset.forName("UTF-8"));

    retourne UTF-8

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Si t'utilise PrintWriter écrit directement tes string avecPas besoin de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pw.write(new String(contenu.getBytes(), "UTF-8")); //c'est la l'erreur

  8. #8
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par hibour Voir le message
    Pas besoin de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pw.write(new String(contenu.getBytes(), "UTF-8")); //c'est la l'erreur
    +1 : ce code ne veut rien dire et peut même apporter des problèmes...


    Si ton texte ne comporte pas de caractères spéciaux cela est tout à fait normal. Les caractères ANSI sont inclut dans la plupart des autres encodages pour compatibilité, y compris dans UTF-8...

    a++

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 274
    Par défaut
    En fait, je souhaite générer un fichier xml en utf-8, pour pouvoir importer des données dans un logiciel tiers.

    Je génère le fichier comme dans le code de mon premier message. J'ai modifié le ".getBytes, "UTF-8"" qui ne sert à rien (en effet)

    mais le logiciel tiers ne peut pas importer mon fichier.

    Si j'ouvre le fichier généré, avec le Bloc-node et que je fais enregistrer sous, il me propose un encodage ANSI !

    si je le modifie en UTF-8, l'import fonctionne bien

    alors comment puis-je m'assurer que le fichier que je génère est bien en UTF-8 ?

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

Discussions similaires

  1. [XML] Création d'un fichier XML
    Par TheDarkLewis dans le forum Langage
    Réponses: 6
    Dernier message: 24/07/2004, 18h27
  2. ligne d'entête création d'un fichier XML
    Par cduterme dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 23/02/2004, 15h30
  3. [création d'un fichier]
    Par gemai dans le forum C
    Réponses: 15
    Dernier message: 29/08/2003, 14h58
  4. FOXPRO 2.6 : erreur créations du /des fichiers CAB
    Par breihtiti dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 16/11/2002, 11h28
  5. [Kylix] Création d'un fichier lien
    Par DrQ dans le forum EDI
    Réponses: 2
    Dernier message: 14/05/2002, 21h30

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