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 :

Encoding et FileInputStream


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 17
    Par défaut Encoding et FileInputStream
    Bonjour,

    Je dois lire un fichier contenant des caracteres accentues. Ils ont ete generes avec un editeur suppose gerer l'encodage utf-8.

    J'utilise les classes suivantes:

    FileInputStream
    BufferedReader
    InputStreamReader

    Je peux facilement (sans preciser d'encodage aux readers) recuperer les caracteres accentues dans une String. J'utilise egalement BufferedReader.readLine() sans preciser l'encodage. Maintenant que cela a ete converti en utf-16, comment transcoder vers de l'ASCII ? Pour resumer, j'obtiens Lú et je voudrais Lú.

    Si vous avez de bons pointeurs sur les bases de l'encodage, je suis plus que preneur...

    Merci,

    kim

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    perso pour les rares cas ou j'ai eu besoin d'utiliser multitudes d'encodages, j'ai utilisé java.nio.charset.*
    Maintenant, ton problème semblant "relativement" simple, il me semble qu'il n'est pas utile de passer par ce package.
    Je laisse ma place aux connaisseurs.
    PS n'hésite pas si tu veux des précisions sur nio.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 17
    Par défaut
    Un grand merci pour ta reponse iohack,

    Effectivement mon probleme est "tout bete" et il doit y avoir moyen de gerer ca plus "simplement" (appel aux connaisseurs). Peut etre au niveau du stream en gerant des bytes (?)... mais les coder pour obtenir Lú en place de Lú me depasse. Ta solution semble plus simple. Mon probleme est que ne sais meme pas quel encodage est utilise dans mon cas . Je sais juste que c'est code comme ca dans la base de donnees que j'utilise. J'imagine que c'est sur 8 bits (???) vu qu'un caractere accentue dans la version utf16* donne 2 caracteres dans l'encodage desire. Une idee ?

    J'ai jete un coup d'oeil a http://java.sun.com/j2se/1.4.2/docs/...etEncoder.html.
    qui parait bien sympathique (merci pour la reference ). Malheureusement, la liste de charsets ne propose rien qui me semble aller...
    Pourrais-tu m'aiguiller sur la marche a suivre avec java.nio stp ?

    J'ai essaye "US-ASCII" qui semblait "le moins pire" en precisant l'encodage au niveau de l'InputStreamReader

    new InputStreamReader(fileInputStream, "US-ASCII"));

    ca ne semble pas marcher mais peut etre faut-il mieux d'abord passer en utf16* et ensuite utiliser un CharsetEncoder ?

    * = Une question de base (de boulet plutot ) pour tenter de comprendre: si on utilise InputStreamReader(FileInputStream), sans preciser d'encodage donc, le stream 'transcode' du format par defaut du systeme vers utf-16 qui est l'encodage utilise par Java. Est-ce bien ca ?

    Merci !

  4. #4
    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 KillMePlease
    * = Une question de base (de boulet plutot ) pour tenter de comprendre: si on utilise InputStreamReader(FileInputStream), sans preciser d'encodage donc, le stream 'transcode' du format par defaut du systeme vers utf-16 qui est l'encodage utilise par Java. Est-ce bien ca ?
    Oui tout à fait !
    Dès que tu utilises une String il y a un encodage en UTF-16, et l'InputStreamReader se charge de cet encodage...


    Mais ensuite il faut refaire l'opération inverse lorsque tu veux enregistrer ta String, en utilisant un OutputStreamWriter...

    a++

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 17
    Par défaut
    Merci pour la confirmation et pour avoir bouge le message au bon endroit .

    Petit a petit je commence q comprendre
    Aucune idee pour cet encodage bizarre que je veux obtenir ?

  6. #6
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 17
    Par défaut
    J'ai trouve les correspondances suivantes:

    Latin1 UTF-1 UTF-8 UTF-7,5 UTF-7 JAVA HTML
    ú ú ú £ú +APo- \u00fa ú

    Ce que je veux donc, je pense, c'est la representation utf-8 de mes String (pas si bizarre que ca l'encodage ).
    Est-ce qu'utiliser un CharsetEncoder vers de l'utf-8 peut marcher ?
    Si c'est la marche a suivre, iohack, j'accueille avec joie ta proposition d'aide stp...

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/01/2005, 17h38
  2. [FileInputStream] readObject
    Par schousso dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 27/05/2004, 15h21
  3. [encoding] symbole €
    Par phoebe dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 11/05/2004, 16h57
  4. Réponses: 4
    Dernier message: 07/05/2004, 21h15
  5. [JSP] encoder et décoder les param d'une URL ?
    Par iubito dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 22/12/2003, 11h34

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