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 :

unicode_texte


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut unicode_texte
    Hello,
    je veux transforme a volonte de l'unicode en texte comment dois je faire?
    actuelle je lie le fichier de cette maniere avec f = String fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      BufferedReader lecteurAvecBuffer = null;
         String ligne;
         try
           {
          /**
           * Ouverture du fichier et lecture ligne par ligne
           */
       lecteurAvecBuffer = new BufferedReader(new FileReader(f));
     
          while ((ligne = lecteurAvecBuffer.readLine()) != null){
           HashMap listTmp = new HashMap();
           if(ligne.length()>0){
            String l = ligne;

  2. #2
    Membre expérimenté Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Par défaut
    Citation Envoyé par tit_oune
    je veux transforme a volonte de l'unicode en texte comment dois je faire?
    c'est à dire ? c'est pas tres clair comme question, l'unicode est une norme de codage pour les caractères... un texte peut entre encoder avec de multiples normes. que veux tu faire exactement ?

    Citation Envoyé par tit_oune
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      BufferedReader lecteurAvecBuffer = null;
         String ligne;
         try
           {
          /**
           * Ouverture du fichier et lecture ligne par ligne
           */
       lecteurAvecBuffer = new BufferedReader(new FileReader(f));
     
          while ((ligne = lecteurAvecBuffer.readLine()) != null){
           HashMap listTmp = new HashMap();
           if(ligne.length()>0){
            String l = ligne;
    concernant ce code, met nous la fin de la boucle je pense qu'on comprendra mieux

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    j'explique :
    L'appli doit parser des fichiers ini cette appli fonctionne bien si le fichier .ini est un fichier texte(du moins enregistrer sous format txt). alors je c que l'unicode est aussi du texte mais ca me donne ca :
    ÿþ[......]
    les .... en fait c'est un carre une lettre un carre une lettre ...
    sachant que ca doit etre :
    [systeme]

    donc forcement qd je parse ca plante




  4. #4
    Membre expérimenté Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Par défaut
    tu peux construire ton BufferedReader avec un InputStreamReader que tu aurait construit à partir d'un FileInputStream et en précisant le charset à utiliser...

    houla, je suis pas clair...

    j'ai pas tout en tête, mais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    File f = new File(fileName);
    FileInputStream fis = new FileInputStream(f);
    InputStreamReader isr = new InputStreamReader(fis, charset);
    //je sais qu'il existe un constructeur qui prend le charset ne parametre
    BufferedReader reader = new BufferedReader(isr);

  5. #5
    Membre expérimenté Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Par défaut
    Pour le charset, je fais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Charset)Charset.availableCharsets().get("UTF-8")
    doit y avoir moyen de récupérer de l'unicode

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    non mais en fait moi j'ai de l'unicode et je veux avoir texte de la forme d'un texte et pas un texte avec des caracteres etrange .

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut Méthode barbare
    Il est probable que votre fichier texte soit en ascii.
    L'ascii est un code sur 8 bits, unicode sur 16 bits. Le truc : unicode a été consruit de façon à ce que les 127 premiers caractères (codé sur les 7 derniers bits) soient identiques.
    Donc on peut convertir en faisant un masque sur 7 bits.
    Attention : ça ne fonctionne que sur les caractères américains. Les lettres accentuées par exemple sont exclues.

    Si possible, utilisez de préférences les entrées sorties de Java qui feront un travail plus propre.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    re,
    j'explique un peu plus.
    Je fais un stage dans une societe qui developpe plusieur projet pour plusieur pays. Jusqu'a present tous les fichier de conf étaient enregistrés en texte. Mais maintenant ils ont un projet pour la chine. Donc dans leurs fichiers de conf il y aura des caracteres chinois. Les developpeurs ont donc decidées d'enregistrer leurs fichier de conf en unicode.
    dons pour que mon appli fonction il fo que je transforme mon fichier en unicode en fichier enregistre en texte et inversement.

    Au fait BugFactory est ce que c'est mon code qui est barbare?

    je pensais sinon faire une copie du fichier en l'enrgistrant en texte normale et le recopier apres en unicode.
    Mais je ne sais pas si c'est possible.

  9. #9
    Membre expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Par défaut Soyons fou...
    Bon, si le premier lien n'a pas servi, c'est soit :
    1 : que j'ai pas tout compris ! (vision pessimiste s'il en est)
    2 : que j'ai rien compris ! (vision opti... ah ben non ! )

    C'est marrant, j'ai traduit un fichier de conf de notre appli pour des chinois y'a pas une semaine. Mais je ne me suis pas embêté, j'ai codé dans le fichier texte les codes Unicode reconnus par Java (\uxxxx) au lieu d'y mettre les caractères. Mais maintenant que tu me dis ça, je pense que je vais faire comme toi !!!
    Merci

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    La devise a priori d ce forum c'est "avant de venir poser tes question va chercher" ce que j'ai fais et j'ai deja teste ce site aussi . Malheureusement ca non plus ca ne marche pas. soit j'ai la poisse soit je suis trop nulle et naturellement j'interdit a tt le monde de dire que c'es le deuxieme cas .

    J'ai teste le meme fichier en UTF-8, et la no prob (enfin quasi) pour le lire mais en unicode j'y arrive vraiment pas. et je peine depuis ce matin .

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    vous trouverez ci-joint ce que cela m'affiche
    Images attachées Images attachées  

  12. #12
    Membre expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Par défaut Voila ce que moi ça m'affiche !
    j'ai changé web.txt en web.ini et l'ai enregistré en Unicode
    puis
    j'ai changé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne = new String ( ligne.getBytes(), "ISO-8859-1" );
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne = new String ( ligne.getBytes(), "UTF-16" );
    voilà le résultat, mais je ne sais pas si c'est ce que tu voulais...

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    tit_oune a dit
    Au fait BugFactory est ce que c'est mon code qui est barbare?
    Non, ma solution. De toute façon avec vos précisions je vois à présent qu'elle est inutile.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Par défaut
    tu as du enregistré le fichier ini en UTF8 parce que la ca marche en effet mais si tu vas dans workpad ou le bloc note et que tu enregistres en unicode a priori tu auras le meme prob que moi.
    et pour repondre a adiGuba sur ce forum on ne peut pas envoyer de fichier .ini a priori. il m'a refuser la piece jointe

  15. #15
    Membre expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Par défaut Ben non !
    je viens de réenregistrer le fichier en Unicode avec NotePad et même résultat que tout à l'heure !
    j'ai testé en enregistrant en Unicode avec Wordpad, et pareil, j'ai la sortie console que j'ai envoyée...
    Si ça ne fonctionne pas chez toi, c'est bizarre, bizarre....

  16. #16
    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
    Citation Envoyé par tit_oune
    tu as du enregistré le fichier ini en UTF8 parce que la ca marche en effet mais si tu vas dans workpad ou le bloc note et que tu enregistres en unicode a priori tu auras le meme prob que moi.
    Ok tu le convertis avec Wordpad (ce n'étais pas forcément évident pour moi ). J'ai donc réussi à reproduire le problème.


    Apparemment le charset utilisé par Wordpad est UTF-16 et non pas ISO-8859-1 que tu utilisais, donc je l'ai remplacé dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lecteurAvecBuffer =  new BufferedReader( new InputStreamReader(new FileInputStream(f),"UTF-16"));
    Au passage fait attention tu ouvrais deux fois le fichier en lecture (avec un BufferedReader juste au dessus), et tu devrais déplacer ton close() dans un bloc finally...

    Ensuite j'ai supprimé la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne = new String ( ligne.getBytes(), "ISO-8859-1" );
    En effet cette dernière pose problème : le BufferedReader te renvoit déjà une String correctement encodé, et avec ce code tu rajoute un encodage incorrect puisque getBytes() te renvoit un tableau de byte avec l'encodage par défaut...


    a++

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

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