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

Langage Java Discussion :

Problèmes d'affichage de caractères spéciaux dans un fichier .txt généré?


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut Problèmes d'affichage de caractères spéciaux dans un fichier .txt généré?
    Salut à tous!!
    Et avant toute chose, bonne année et meilleurs voeux à tout le monde!!

    J'ai un petit problème avec un fichier txt généré par mon programme java...
    Alors voila, je lance mon batch java depuis un site en php, et ce batch réalise une importation de donnée ainsi qu'un fichier log contenant les diverses info sur l'import...ce fichier log est ensuite consultable sur le site (www.lesite.fr/lecas/lefichierlog.txt)
    Le fichier log est généré correctement mais lorsque je le consulte a partir du site, certains caractères sont remplacé par des ?
    Par exemple la phrase Importé avec succès de mon programme java se retrouve en Imort? avec succ?s dans mon fichier txt...
    J'ai essayé de mettre le code html du é mais ça ne fonctionne pas...
    Avez vous déja rencontré ce problème? et avez vous une solution à me proposer??

    Merci d'avance a vous tous!!

  2. #2
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Ton problème est un problème d'encoding du fichier : ISO vs UTF-8.
    Le tout est de savoir :
    - Dans quel encoding est ton fichier généré (utiliser par exemple utltraedit pour le savoir)
    - Dans quel encoding le serveur http t'envoie le fichier (aller dans affichage->codage pour le savoir dans IE)

    Si je ne dis pas de bêtise, il faut que les deux soient cohérents, pour que tu voies apparaître ton é comme un é et non comme un ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Wahou je croyais que ça allait etre plus simple que ça

    J'ai regardé sous IE et a priori l'affichage se fait en Latin(ISO) par contre avec ultraedit je ne trouve pas (ou faut il aller??)

    Et dans le cas de normes différentes (ce qui a l'air d'etre le cas!!), que faut il faire pour obtenir un résultat cohérent??

  4. #4
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    dans ultra-edit tu vois normalement l'encoding du fichier en bas a droite quand tu ouvres le fichier.
    A priori, tu es en train de visualiser un fichier généré par Java en UTF en tant qu'ISO et c'est pour ça que tu le vois de travers.

    Pour vérifier, mets ton affichage de IE en UTF-8 (affichage->codage->unicode). Tu vois bien le é correctement maintenant ?

    Si oui, tu as deux solutions :
    - Déclarer au niveau de ton serveur http que les documents texte sont renvoyé en UTF-8 et non en ISO, mais cela risque d'avoir beaucoup de conséquences.
    - Changer la façon dont ton fichier est généré pour qu'il soit généré en ISO.

    Les problèmes d'encoding sont rarement simples :-(

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    J'ai essayé ce que tu m'as dit avec IE, mais ça ne marche pas. Toujours le ? pour les caractères spéciaux
    Je vais continuer à chercher un peu... et au pire des cas: je vire tous les accents!! Comme ça au moins je suis tranquille

  6. #6
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Etrange ... tu peux me dire comment ton fichier est généré ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    En fait j'appelle mon batch java depuis mon site php en lui indiquant comme sortie le fichier .txt
    (le fichier log.txt est créé avant l'appel du batch)
    ce qui fait que tous les System.out.println ne s'affiche pas à l'écran (sur la sortie standard) mais dans le fichier log.txt...ce qui permet de le remplir...
    Et c'est comme ça que mon System.out.println("Importé avec succès"); dans mon prog java se transforme miraculeusement en Import? avec succ?s dans mon fichier log.txt


  8. #8
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Mais quand tu ouvres le fichier log avec un éditeur comme ultraedit tu vois bien les accents c'est ça ? C'est seulement quand tu le visualises par le site web que tu vois les "?" ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Non je vois tout le temps les ?, que ce soit avec UltraEdit et IE...mais par contre lorsque je faisais tourner mon batch en local(pour le développement) les accents apparaissaient correctement...

  10. #10
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    La j'avoue que je ne sais pas trop Apparemment la redirection faite par le shell casse l'encoding ...
    Une alternative à enlever les accents pourrait être d'utiliser un framework de logging (ce qui est à mon sens beaucoup plus propre que du simple System.out) pour générer ton fichier de log directement.

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    Ouais c'est clair que cette méthode n'est pas très propre...mais vu ce qui est demandé dans le log (des choses assez précises sur des tests de données etc...) , que ce n'est qu'une version "beta" et que les delais sont assez short...je vais conserver cette méthode pour l'instant..tant pis pour les accents, ce n'est que secondaire...
    Merci beaucoup quand même pour ton aide, c'est bien sympa!!

    si je trouve le truc je le posterai ici pour ceux que ça intéressent!!

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut
    J'ai changé un petit truc dans ma ligne de commande et ça fonctionne!!plus de '?' mais des vrais 'é' 'è' 'à' etc...

    java -Dfile.encoding=ISO-8859-1 Import >log.txt &

    Bon comme ça cela fonctionne, mais pour dire vrai j'ai utilisé cette commande un peu à tout hasard sans trop savoir a quoi elle sert (ahhhhh les joies de google ). Et maintenant j'ai un peu peur que ça fasse déconné mon appli a d'autres endoits...donc si cette commande vous est familière pouvez vous me dire si le fait de lancer ma ligne de commande avec ce parametre de plus peut faire "planter" mon appli a d'autres endroits...???Merci d'avance, ça me permettra de dormir tranquille ce soir!!


  13. #13
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Euh ... content que ça marche, mais là j'avoue que je reste sec sur le pourquoi...

    A ma connaissance, -Dfile.encoding permet de spécifier l'encoding par défaut que la jvm va utiliser lors de la création/écriture de fichier. Mais apparemment je dois passer à côté de quelquechose parce que là ce n'est pas Java qui crée ton fichier mais le shell Unix donc j'avoue que je ne vois pas du tout le rapport ...

  14. #14
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    tout simplement car java doit écrire dans le flux sortant en UTF8, et comme en Unix tout est fichier, le flux de sortie de la console en est un donc java écrira en UTF8
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  15. #15
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut

    Euh, comment dire ... Je vais me cacher

    Merci de l'explication !

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 117
    Points : 54
    Points
    54
    Par défaut


    Pas mieux...

    Merci pour l'explication!!

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

Discussions similaires

  1. Affichage de caractères spéciaux dans un fichier
    Par ploxien dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2007, 10h27
  2. [HTML] [I.E.] Affichage de caractères spéciaux dans un select
    Par madtroll dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 18/05/2007, 17h50
  3. [AJAX] Affichage des caractères spéciaux
    Par mitmit dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/04/2007, 13h47
  4. [SQL] Problème d'affichage de caractère spéciaux dans une variable chaîne
    Par Kryptonaute dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/08/2006, 08h40
  5. Réponses: 10
    Dernier message: 31/03/2006, 20h46

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