Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit problème d'encodage

Pour comparer des Strings

    14 janvier 2011 à 12:34:00

    Bonjour!
    J'ai un petit soucis d'encodage dans mon programme Java.
    Il n'est destiné qu'à Mac OS, qui utilise massivement l'UTF8 il me semble.

    Mon programme prend en ligne de commande une chaîne de caractères pouvant être accentuée, et vérifie que cette chaîne est présente dans un fichier texte (encodé en utf8) et lu avec un BufferedReader.
    Cependant, le programme ne fonctionne pas avec les caractères accentués.
    Je me demande si le problème vient de la chaine en ligne de commande (normalement encodé en utf8) ou de la lecture du fichier.
    Sauriez-vous d'où peut venir mon problème ?

    Merci et bonne journée !

    Voici mon code, très très court :
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.nio.charset.Charset;
    
    
    public class Wrd2Trans {
    
    	/**
    	 * @param args
    	 * @throws Exception 
    	 */
    	public static void main(String[] args) throws Exception {
    		String mot;
    		String nomFichier;
    		
    		if(args.length > 1) {
    			mot = args[0];
    			nomFichier = args[1];
    		}
    		else throw new Exception("T'as oublié de mettre le mot ou le fichier !!");
    		 
    		for(int i = 0; i < mot.length(); i++) {
    			if(i < (mot.length() - 1))
    				System.out.println(i + " " + (i+1) + " " + mot.charAt(i) + " " + "<eps>");
    			else {
    				if(isInFile(nomFichier, mot))
    					System.out.println(i + " " + (i+1) + " " + mot.charAt(i) + " " + mot /*getIndex(nomFichier, mot)*/ );
    				else 
    					System.out.println(i + " " + (i+1) + " " + mot.charAt(i) + " " + "<unk>");
    				System.out.println(i+1);
    			}
    		}
    		
    	}
    	private static boolean isInFile(String nomFichier, String mot) {
    		Boolean yes = false;
    		String ligne = "";
    		try {
    			BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(nomFichier), Charset.forName("UTF-8")));
    			while((ligne = br.readLine()) != null) {
    				if(ligne.contains(mot)) {
    					yes = true;
    				}
    			}
    		} catch (FileNotFoundException e) {
    			System.out.println("T'as menti sur l'emplacement du fichier, vilain !");
    		} catch (IOException e) {
    			System.out.println("Le fichier n'est pas lisible !");
    
    		}
    		return yes;
    	}
    
    }
    
    • Partager sur Facebook
    • Partager sur Twitter

    Petit problème d'encodage

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown