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

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    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 actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    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 du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    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 actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    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 actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    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 du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    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 du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    et je viens de tester ce code mais ca ne change rien je recupere tj la meme ligne de caractere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lecteurAvecBuffer =  new BufferedReader( new InputStreamReader(new FileInputStream(fichier),"ISO-8859-1"));

  8. #8
    Membre habitué Avatar de horkets
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    326
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2005
    Messages : 326
    Points : 138
    Points
    138
    Par défaut
    Je constate que je ne suis pas le seul à avoir des problemes de charset dans un programme java ...

    De mon coté, j'essaie envain d'afficher le resultat d'une commande DOS envoyée sur un server correctement (sans '?' remplaçant les 'é').
    J'ai essayé tout les charset possible (il me semble), mais aucun ne fonctionne.



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

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    Par défaut voir la FAQ
    je pense que ces lignes peuvent t'intéresser...
    http://java.developpez.com/faq/java/...#charsetString

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    je vois qu'on a les meme reference mais mon malheureusement ca ne ma pas aider

  11. #11
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Quel est le code complet de la lecture du fichier ?
    Quel est le charset du fichier à lire ? Quel est le charset pour l'affichage des données ?
    Quel est le contenu de ce fichier ?

    a++

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    Par défaut
    la methode pour parser le fichier est :
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    public void parse(String f, String s, String k) throws IOException{
      int id_session = 0;
      int id_key = 0;
      setFichierIni(f);
      setFile(f);
      BufferedReader lecteurAvecBuffer = null;
         String ligne;
         File fichier = new File(f);
     
         try
           {
          /**
           * Ouverture du fichier et lecture ligne par ligne
           */
       lecteurAvecBuffer = new BufferedReader(new FileReader(f));
       lecteurAvecBuffer =  new BufferedReader( new InputStreamReader(new FileInputStream(f),"ISO-8859-1"));
     
          while ((ligne = lecteurAvecBuffer.readLine()) != null){   
           ligne = new String ( ligne.getBytes(), "ISO-8859-1" );
           System.out.println("___"+ligne);
           HashMap listTmp = new HashMap();
           ligne = ligne.toString();
           System.out.println(ligne);
     
           if(ligne.length()>0){
            String l = ligne;
            l= l.substring(0,1);
            /**
             * toutes lignes commencant par un ; est un commentaire
             */
            if(!(l.equals(";"))){
             /**
              * Si le premier caractere de la ligne est [ alors c'est un section et on recupere dans une variable id_section son nom
              */
             if(l.equals("[")){
              String lis;
              lis = ligne;
              System.out.println("lis _"+lis);
              setSession(lis);
              id_session =1;
             }
             String sp[];
             /**
              * Si la ligne contient un = alors on defini une key et sa valeur 
              */
             sp = ligne.split("=");
     
             if(!(sp[0] == ligne)){
              setKey(sp[0]);
              setValue(sp[1]);
              String sTmp;
              s = s.trim();
              sTmp = "["+s+"]";
     
              file = file.trim();
              f = f.trim();
              session = session.trim();
              k = k.trim();
              key = key.trim();
     
              if(f.equals(file) && sTmp.equals(session) && k.equals(key)){
               /**
                * si les valeur passer en parametre de la fonction sont egales a celles trouver dans le fichier alors on insere dans un hashMap ces valeurs et on les ajoutes a la list
                */
               id_key = 1;
               listTmp.put("File",file);
               listTmp.put("Key",key);
               value = value.trim();
               listTmp.put("Value",value);
               listTmp.put("Session",s);
               listTmp.put("Action","0");
               if(!existList(listTmp)){
                list.add(listTmp);
               }
              }
             }
            }
           }
          }
        /**
         * Si id_key = 0 cela signifie que la section n'existe pas dans le fichier
         */
          if(id_key == 0){
           erreur += donnerHeure()+"   The key  "+k+" doesn't exist in the section "+s+" of the file "+f+"\n";
          }
          /**
           * Si id_session = 0 cela signifie que la
           */
          if(id_session == 0){
           erreur += donnerHeure()+"   The section " + s +" doesn't exist in the file "+f+"\n";
          }
          lecteurAvecBuffer.close();
           }catch(FileNotFoundException exc){
            Calendar c = Calendar.getInstance(Locale.FRANCE);
            erreur += donnerHeure()+"   ERROR of opening of the file  : " +f +"\n";
          }
     }
    et le fichier est : web.ini
    [systeme]
    customer = 1 ; 1->THSRC 2->Oslo
    post_or_tvm = 1 ; 1-> POST 2-> TVM
    [web]
    timeoutInactivite = 180 ; second
    timeoutWindowTimeOut = 20
    timeoutNavigation = 20
    local_html = ..\Data\html ;

    ;simulator

    j'envoie le .ini en fichier texte il fo le erenregistrer en .ini et en code document unicode

    Fichiers attachés Fichiers attachés

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 859
    Points
    1 859
    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.

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    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.

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    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

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 111
    Points : 62
    Points
    62
    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 .

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

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

  18. #18
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tit_oune
    j'envoie le .ini en fichier texte il fo le erenregistrer en .ini et en code document unicode
    Que veux-tu dire par là ???
    Pourquoi ne pas nous envoyer directement le fichier que tu essaye de lire ? J'ai essayé de reproduire ton problème en vain...

    a++

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Points : 328
    Points
    328
    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...

  20. #20
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 859
    Points
    1 859
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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