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 :

Conversion Charset File/InputStream


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
    Mai 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 101
    Par défaut Conversion Charset File/InputStream
    Bonjour à tous,

    Après avoir religieusement regarder les FAQs je n'ai pu trouver de réponses à mes questions (si il y en a une !)

    Mon problème est celui ci, j'ouvre un fichier et je le parcours pour en extraire son contenu et effectuer un traitement sur ce dernier.

    Hélas je ne connais pas le format d'encodage de ces dits fichiers et je souhaiterais qu'il soient en UTF-8 (marre de me retrouver avec des gros carrés noir à la place de mes accents et autres caractères spéciaux).

    Code java : 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
    private static BufferedReader open(String pNomFichier) {
    		File tFile=null;
     
    		try {
    			tFile = new File(pNomFichier);
    			InputStreamReader tInputSR = new InputStreamReader(new FileInputStream(tFile));
    			if(Charset.isSupported(tInputSR.getEncoding())){
    				System.out.println("ça passe!!");
    			}
    			cBuffer = new BufferedReader(tInputSR);
    			tInputSR.close();
     
    		} catch (FileNotFoundException eFileNotFoundException) {
    			//(FileNotFoundException fileNotFoundException)
    			System.out
    					.println("Probleme de FileInputStream : FileNotFound");
    			cBuffer=null;
     
    		} catch (IOException eIOException) {
    			System.out.println("Erreur fermeture InputStreamReader");
     
    		} catch(NullPointerException eNullPointerException){
    			System.out
    				.println("NullPointer à la création du fichier, chemin sans doute incorrect");
    			cBuffer=null;
    		}
     
    		return cBuffer;
    	}


    J'arrive bien à récupérer l'encodage mais je ne vois pas comment le modifier une fois mon inputStream récupéré :/

    Merci en avance de votre aide !

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


    InputStreamReader ne détecte pas l'encodage. Si tu ne précise rien il utiliser l'encodage par défaut et puis c'est tout !

    C'est à toi à spécifier l'encodage réel du fichier.



    Sinon... Ta méthode est un peu bizarre


    a++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 101
    Par défaut
    salut,

    Tu peut préciser pour le bizarre ? quitte à se faire basher autant savoir pourquoi

    Edit:

    Bon j'ai déjà simplifié la chose

    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
    	private static BufferedReader open(String pNomFichier) {
     
    		BufferedReader cBuffer = null;
    		File tFile=null;
     
    		try {
    			tFile = new File(pNomFichier);
    			cBuffer = new BufferedReader(new FileReader(tFile));
     
    		} catch (FileNotFoundException eFileNotFoundException) {
    			System.out
    					.println("Probleme de FileReader : FileNotFound");
    		} catch(NullPointerException eNullPointerException){
    			System.out
    				.println("NullPointer à la création du fichier, chemin sans doute incorrect");
    		}
     
    		return cBuffer;
    	}

  4. #4
    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
    Ben c'est super-long avec une gestion des exceptions un peu compliqué et casse-gueule :
    • tu retournes null, donc cela va t'obliger à vérifier cela à tout bout de champ .
    • La gestion des exceptions à ce niveau ne sert à rien, autant les laisser remonter ce sera bien plus pratique pour gérer les erreurs...


    Bref cela devrait plutôt ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	private static BufferedReader open(String pNomFichier, String charsetName)
    	throws FileNotFoundException, UnsupportedCharsetException {
    		Charset charset = Charset.forName(charsetName);
    		return new BufferedReader(
    				new InputStreamReader(new FileInputStream(pNomFichier),charset) );
    	}
    a++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 101
    Par défaut
    merci, en fait je fais la gestion des exceptions à ce moment là pour tester. J'ai déjà mes packages tous prêts mais j'ai pas encore remonté tout ça avant de réglé ce fichu pb de charset

  6. #6
    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 lifty Voir le message
    merci, en fait je fais la gestion des exceptions à ce moment là pour tester.
    Ben même pour tester cela rend le code plus long et moins lisible...

    a++

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Quoi qu'il en soit,

    Citation Envoyé par lifty Voir le message
    Hélas je ne connais pas le format d'encodage de ces dits fichiers et je souhaiterais qu'il soient en UTF-8 (marre de me retrouver avec des gros carrés noir à la place de mes accents et autres caractères spéciaux).
    Si tu ne sais pas en quel encodage sont tes fichiers, tu n'arriveras à rien. Avant tout, tu dois le savoir.
    (Si tu veux te lancer dans une autodétection, j'imagine qu'il existe des bibliothèques qui font ça, mais ça ne vaut que ce que ça vaut.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. conversion des files .DOC en files PDF
    Par INFOAPPRENDISTA dans le forum Word
    Réponses: 5
    Dernier message: 20/03/2007, 20h18
  2. Réponses: 2
    Dernier message: 02/02/2007, 09h56
  3. [oracle 9i] Conversion Charset
    Par Charly94 dans le forum Oracle
    Réponses: 4
    Dernier message: 08/12/2006, 17h37
  4. Conversion Strinf file en Byte[]
    Par Tail dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 04/09/2006, 16h34
  5. [Conversion] String en InputStream
    Par canou94 dans le forum Langage
    Réponses: 5
    Dernier message: 22/02/2005, 15h04

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