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

avec Java Discussion :

Enlever les caractères accentués


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 70
    Par défaut Enlever les caractères accentués
    Bonjours à tous.

    Mes revoilà pour une petite question comme le titre l'indique.
    Je suis à l'heure actuelle en train de faire un petit code pour travailler sur des fichiers.txt .

    En faite ,je voudrais pouvoir supprimer les lettres accentués du texte avant d'y travailler dessus.
    J'ai essayé plusieurs choses et la dernière est :
    J'ai mis mon texte sous forme de string ,mais les caractères accentués sont sous forme de code (lettres et chiffres dans un carré : est oui je n'y connait rien pour l'instant dans les code de caractères) .
    Donc ici impossible d'utiliser replace() ou replaceAll() .
    J'ai essayé en mettant le texte dans un tableau Array , et pas de meilleur résultat.

    Je suppose qu'il me faut récupérer les code des caractères et les forcer a changer de code (remplacer un code par un autre ).
    Problème ou trouver les codes est comment faire ?

    Si quelqu'un peut me donner un petit tuyau se serait cool

    merci d'avance .

  2. #2
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Heu t'as pas besoin des codes a priori:
    pour un e accentué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    String test="éêè";
    char[] testChar=test.toCharArray();
    test="";
     
    for(int cpt=0;cpt<testChar.length;cpt++){
     if(testChar[cpt]=='é'||testChar[cpt]=='ê'||testChar[cpt]=='è'){
      testChar[cpt]='e';
     }
     test=test+testChar[cpt];
    }
    Bon c'est vilain comme code, mais c'est la premiere chose qui me viens à l'idée. Dois surement y avoir mieux.

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Salut,

    Une FAQ existe:

    http://java.developpez.com/faq/java/...primmer_accent

    Cordialement,

    Dan

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 70
    Par défaut
    j'ai du mal m'exprimer ,puisque lorsque je récupère mon fichier.txt sous forme de string ou de caractères voila ce que j'obtiens :

    fichier.txt :
    bête

    String :
    bᅢᆰte

    Je comprend pas ???

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


    Tu as tout simplement un problème d'encodage !

    • Quel est l'encodage du fichier ?
    • Comment lis-tu de fichier ?
    • Comment affiches-tu son contenu ?


    a++

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 70
    Par défaut
    Mon fichier est un fichier normal en .txt .
    je le récupère avec
    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
     
    		  FileInputStream fis;
     
     
    	         // Ouvrir les flux
     
    	        try {
     
    	                fis = new FileInputStream(new File(path));
     
     
    	                byte[] buf = new byte[1]; //pour éviter des erreurs en lisant plus de bit qu'il ne faut
    	                int n = 0;
     
    	                while((n = fis.read(buf)) >= 0) // lecture du fichier
    	                {
     
    	                    //mise dans un array des bytes du texte 
    	                      for(byte bit : buf){
     
    	                        	al.add( (char)bit) ;
    	                        	longueurArray++ ;
     
     
    	                      }
    	                }
     
    	                //On ferme nos flux de données
    	                fis.close(); 
     
    	                //fermer les flux
     
    	        } catch (FileNotFoundException e) {
    	    		e.printStackTrace();
     
    	        } catch (IOException e) {
    	        	e.printStackTrace();
    	        }
    Et je le met dans un String avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         String phrase = "";
    	  for( int i = 0 ; i < longueurArray ; i++) {
     
    		   phrase += String.valueOf( al.get(i));
    	  }
    Et quand je lis le String j'ai un truc qui ressemble à : bᅢᆰte

  7. #7
    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 yoann34 Voir le message
    Mon fichier est un fichier normal en .txt .
    Un fichier texte utilise forcément un encodage !!


    Pour lire un fichier texte il faut utiliser un reader qui fera la conversion byte<->char selon l'encodage. De plus ton code de lecture est loin d'être correct et encorem oins performant (opérateur + dans une boucle, double boucle de traitement).

    Dans ton cas puisque tu ne le connais pas on utilisera l'encodage par défaut :
    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
    	public static String read(File file) throws IOException {
    		Reader reader = new FileReader(file);
    		try {
    			StringBuilder sb = new StringBuilder();
    			char[] cbuf = new char[8196]; // buffer de lecture
    			int len;
     
    			while( (len=reader.read(cbuf)) >= 0) {
    				sb.append(cbuf, 0, len);
    			}
     
    			return sb.toString();
    		} finally {
    			reader.close();
    		}
    	}
    a++

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Par défaut
    Re,

    "Et quand je lis le String j'ai un truc qui ressemble à : bᅢᆰte "

    Tu ne dis toujours pas comment "tu lis le String".
    Est-ce un affichage à la console MSDOS (println) ?

    Dan

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

Discussions similaires

  1. [AJAX] Problèmes avec les caractères accentués
    Par marti dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 26/10/2005, 14h10
  2. Réponses: 5
    Dernier message: 04/09/2005, 12h34
  3. Réponses: 6
    Dernier message: 14/07/2005, 14h25
  4. [C#][ADO] Enlever les caractère spéciaux
    Par Oberown dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/01/2005, 18h38
  5. [PostgreSQL] Les caractères accentués ?
    Par yacomor dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/02/2003, 16h30

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