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 :

input/output problem with arabic characters


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut input/output problem with arabic characters
    J'ai écrit le programme suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class Voielle {
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		System.out.println("");
    		System.out.println("entrer la chaine de characteres :");
    		String mot1 = Clavier.lireLigne();
    		System.out.println(mot1);
    		}
    }
    J'ai sauvegarder le fichier Voielle.java en UTF-8.
    La classe Voielle utilise la classe Clavier décrite dans Clavier.java comme suit :


    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
    99
    100
    101
    102
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    import java.util.StringTokenizer;
     
     
    public final class Clavier {
        private static BufferedReader bufIn = null;   
        private static StringTokenizer st = null;  
        private Clavier() {}
        private static void initialise() {
          if (bufIn == null)
            bufIn= new BufferedReader(new InputStreamReader(System.in));
          }
        private static void read()  {
    	if (bufIn == null)   
    	    initialise();    
    	try {          
    	    String s = bufIn.readLine();    
    	    st = new StringTokenizer(s);    
    	} catch (IOException e) {
    	    System.err.println("read" + " " + e.getMessage());
    	    System.exit(2); 
    	}
        }
     
        private static void flushTotal() {
            st = null;
    	bufIn = null ;
        }
        private static void flush() {
            st = null;
        }
     
        public static int lireInt()  {
    	if (st == null)
    	    read();
    	while (! st.hasMoreTokens())
    	    read();
    	String ss = st.nextToken();
    	int i = Integer.parseInt(ss);
    	return(i);
        }
     
        public static long lireLong()  {
    	if (st == null)
    	    read();
    	while (! st.hasMoreTokens())
    	    read();
    	String ss = st.nextToken();
    	long i = Long.parseLong(ss);
    	return(i);
        }
     
        public static float lireFloat()  {
    	if (st == null)
    	    read();
    	while (! st.hasMoreTokens())
    	    read();
    	String ss = st.nextToken();
    	float f = Float.parseFloat(ss);
    	return(f);
        }
     
        public static double lireDouble()  {
    	if (st == null)
    	    read();
    	while (! st.hasMoreTokens())
    	    read();
    	String ss = st.nextToken();
    	double f = Double.parseDouble(ss);
    	return(f);
        }
     
        public static String lireString()  {
    	if (st == null)
    	    read();
    	while (! st.hasMoreTokens())
    	    read();
    	return(st.nextToken());
        }
        public static String lireLigne()  {
    	String s = "" ;
    	if ((st == null) || (!st.hasMoreTokens()))
    	{
    	    if(bufIn == null) 
    		initialise() ;
    	    try{
    		s = bufIn.readLine() ;
    	    } catch (IOException e) {
    		System.err.println("lireString" + " " + e.getMessage());
    		System.exit(2); // Une erreur s'est produite, on sort du programme.
    	    }
    	    return s ;
    	}
    	else
    	{
    	    System.out.println("Autre cas") ;
    	    return(st.nextToken(System.getProperty("line.separator")));
    	}
        }
    }
    Le problème survient lorsque je tente d'utiliser des caractères arabes. Je reçois en sortie un caractère inconnu.

    Comment résoudre ce problème ?

  2. #2
    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,


    La console n'est pas forcément le meilleur endroit pour utiliser des caractères spéciaux...

    Il faudrait savoir quel type de console tu utilises (Linux / Windows / Autres ) ? Et l'encodage qu'elle utilises...

    Une saisie via une interface graphique serait plus approprié je pense !

    a++

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci le réponse
    Mais j'ai le problème uniquement avec certains caractères, tel que les
    signes diacritiques KASRA et DAMMA et KASRA double, et la lettre
    arabe FAH, mais ça marche super bien pour les autres chaines de
    caractères qui ne contiennent pas ces caractères, en fait jusqu'au
    là. J'utilise eclipse sous windows et le fichier est en utf-8.

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 626
    Points : 15 736
    Points
    15 736
    Par défaut
    Si certains caractères spéciaux passent et d'autre, pas, il s'agit probablement d'un problème de police qui ne gère pas tous les caractères.

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    j'ai bien vérifier la police utilisée par eclipse, je l'ai même fixé en times new roman qui supporte très bien la norme Unicode. mais ça n'a pas résolu le problème. je suppose que c'est in problème de codage d'entrée du console d'exécution eclipse.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Points : 135
    Points
    135
    Par défaut
    Salut,

    as tu configuré la console pour l'utf-8 ?
    Dans eclipse, c'est dans les options de Run -> Common -> Console Encoding -> UTF-8

  7. #7
    Candidat au Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    parfait, ça marchait, j'ai changé le console encoding, mais j'ai choisi le utf-16, et non pas le utf-8. mais je ne comprends pas quand même.
    merci infiniment

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

Discussions similaires

  1. Probleme Input output bloqué.
    Par micou dans le forum Général Java
    Réponses: 3
    Dernier message: 22/09/2009, 12h28
  2. Probleme d'input/output XML pour Web service Java - AXIS2
    Par 2beornot2be dans le forum Services Web
    Réponses: 1
    Dernier message: 06/08/2009, 11h59
  3. erreur input output
    Par kanzarih dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 05/11/2006, 00h40
  4. Problème input/output fichier
    Par nenekes dans le forum Cobol
    Réponses: 3
    Dernier message: 09/09/2006, 22h54
  5. Problem with Sessions
    Par Chiabni dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/05/2006, 10h41

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