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 :

Encodage dos System.in


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut Encodage dos System.in
    Bonjour,

    J'ai créé une petite appli java qui construit un fichier sérialisé.
    Lorsque je lance cette appli depuis l'éditeur (netbeans) le fichier construit est exploitable par par une autre appli java.

    Lorsque je lance cette appli a travers une console (cmd) , le fichier est inexploitable

    Gestion de l'entrée standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Charset utf8 = Charset.forName("UTF-8");
    System.out.println("Nom du login UNIX :");
    entree = new BufferedReader(new InputStreamReader(System.in,utf8));

    Merci

  2. #2
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 895
    Par défaut
    Bonjour

    Je pense que tu peux retirer ton paramètre Charset dans le constructeur de ton InputStreamReader. C'est ça qui doit bloquer vu que Windows utilise un autre type de Charset.
    Par contre, tu peux encoder le résultat de ta saisie en utilisant UTF-8 lors de ta sérialisation.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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


    La console de Windows n'utilise pas d'UTF-8 mais un encodage spécifique qui peut varier selon la région. En général en Europe de l'Ouest c'est du CP850.

    Malheureusement il n'y a pas de moyen simple pour récupérer cet encodage.
    Il y a bien la propriété "file.encoding" mais sous Windows cela ne correspond pas à l'encodage de la ligne de commande :/


    Si tu tournes sous Java 6, la solution serait de passer par la classe Console pour obtenir un Reader correctement configuré.
    Sachant qu'on ne peut l'utiliser que lorsqu'on est relié à une vrai console, cela revient à faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	public static Reader getInputReader() {
    		Console console = System.console();
    		if (console!=null) {
    			return console.reader();
    		}
    		return new InputStreamReader(System.in);
    	}

    a++

  4. #4
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Merci de votre aide,
    je suis sous 1.4.2

    Pour construire mon fichier sérialisé je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FileOutputStream fichier = new FileOutputStream(repCrypt + File.separator + "monFic.serial");
    J'utlise un String dans le constructeur...

    Si je comprends bien, il faut que je récupère un File avant de sérialiser
    faire dans un premier temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), utf8));
    puis faire un file de ce reader afin de le passer au FileOutputStream

    Non ?

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

Discussions similaires

  1. encodage DOS C++
    Par PyNub dans le forum Débuter
    Réponses: 16
    Dernier message: 13/09/2010, 15h30
  2. [Encodage] Charset et console Dos
    Par ToYonos dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 01/02/2005, 12h10
  3. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 16h38
  4. [Debutant(e)][Système]Executer une commande DOS
    Par iceman dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 18/05/2004, 14h30
  5. Encodages DOS et Windows
    Par Aramis dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2003, 17h55

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