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 de fichier Java, transmission Windows vers Unix


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut Encodage de fichier Java, transmission Windows vers Unix
    1) Pour bien encoder mon fichier en ascii, est-ce le code suivant n'est pas suffisant? (je reste en utf8 sans bom)
    comment préciser de façon systématique et sûre?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            File fichier = new File("toto.txt");
            System.setProperty("file.encoding","US-ASCII");
            // fichier ouvert en mode append
            try {
                final BufferedWriter out = new BufferedWriter(new FileWriter(
                        fichier));


    2) autre question, je génère un fichier qui est ensuite transmis dans un système unix,
    est-ce que mon code ci-dessous est adapté?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            out.write(chaineEnregistrementTraite);
            out.newLine();
    Quels sont les risques? Avez-vous des solutions?


  2. #2
    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
    Citation Envoyé par batou22003 Voir le message
    1) Pour bien encoder mon fichier en ascii, est-ce le code suivant n'est pas suffisant? (je reste en utf8 sans bom)
    comment préciser de façon systématique et sûre?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Path path = Paths.get("toto.txt");
    try(Writer writer = Files.newBufferedWriter(path, StandardCharsets.US_ASCII)) {
     
    }
    Ceci étant dit, quand un fichier est en ASCII, il est identique au même fichier en utf-8 sans bom, forcément. C'est un peu ce qui a fait le succès d'utf-8.

    Citation Envoyé par batou22003 Voir le message
    2) autre question, je génère un fichier qui est ensuite transmis dans un système unix,
    est-ce que mon code ci-dessous est adapté?
    Comme le dit un grand maître Pandaren,

    ... Ce n'est peut-être pas... La bonne question.

    Le code adapté, est celui qui produit le fichier adapté. Le fichier est adapté s'il est tel qu'il doit être pour marcher.
    Un fichier se fiche complètement de s'il est sur Windows, Unix ou Zerfslt (l'OS multiversel zorblaxien.) Il se fiche complètement de s'il est transféré de l'un à l'autre.

    Ce que tu dois faire, c'est regarder à quoi doit ressembler ton fichier pour marcher.
    Et ton code Java doit faire en sorte que ce fichier soit tel qu'il doit être.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Et pour info, ceci n'a aucun effet il me semble:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.setProperty("file.encoding","US-ASCII");
    Cette propriété n'est lue qu'au démarrage de la JVM, plus après.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut encodage
    Merci pour vos réponses.

    Je vais tester ce code. Je me demande également si je ne risque pas d'avoir des problèmes d'accents avec l'ASCII. Je m'excuse encore de mes questions, je ne m'y connais pas beaucoup en encodage. Et en utf8 sans bom, les accents passent?

  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
    Citation Envoyé par thelvin Voir le message
    Le code adapté, est celui qui produit le fichier adapté. Le fichier est adapté s'il est tel qu'il doit être pour marcher.
    Un fichier se fiche complètement de s'il est sur Windows, Unix ou Zerfslt (l'OS multiversel zorblaxien.) Il se fiche complètement de s'il est transféré de l'un à l'autre.
    En plus de l'encodage, il y a quand même une différence sur les fins de ligne, représenté par "\n" ou "\r\n" selon les systèmes.

    La méthode newLine() du BufferedReader écrit la fin de ligne du système hôte...

    Citation Envoyé par batou22003 Voir le message
    Je vais tester ce code. Je me demande également si je ne risque pas d'avoir des problèmes d'accents avec l'ASCII. Je m'excuse encore de mes questions, je ne m'y connais pas beaucoup en encodage. Et en utf8 sans bom, les accents passent?
    Heu... Il n'y a pas d'accents en ASCII !!!

    Sinon l'UTF-8 te permet de représenter tous les caractères.
    Le BOM ne rentre pas en compte (c'est juste un marqueur permettant de faciliter la reconnaissance de l'encodage du fichier).


    a++

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut encodage
    L'ascii ne supporte pas les accents.

    Peut -etre que je m'inquiète pour rien, le client pour qui je développe le fichier utilisé par leur programme a écrit plusieurs fois sur ses documents encodage ASCII .
    J'essaie d'anticiper sur les problèmes d'encodage pouvant intervenir , dans le cas où il me confirme que l'encodage est uniquement en ASCII.
    Je lui demande également de confirmer si l'encodage utilisé par son programme supporte les accents.
    Et si il n'est pas contraint par son environnement pour la lecture des passages à la ligne d'un fichier généré par Windows. En effet, je ne sais pas comment ils vont lire notre fichier.


    Merci encore de votre aide.

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en très gros en ASCII, tu aura les lettres, les chiffres, la ponctuation, les différentes types de parenthèses.


    https://en.wikipedia.org/wiki/ASCII#...ble_code_chart

    l'ascii c'est du 7bits.

    Vérifie quand même que ton client raconte pas de conneries. Beaucoup de gens confondent ascii et "ascii étendu". Le premier est un encodage, le deuxième un miriades d'encodages différents suivant le pays et l'os. Toute la série des ISO-8859-XX rentrent dans la catégories des ascii étendus. Toute la série des code page windows aussi.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut encodage
    le code donné ne fonctionne pas en 1.6, c'est du 1.7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Path path = Paths.get("toto.txt");
    try(Writer writer = Files.newBufferedWriter(path, StandardCharsets.US_ASCII)) {
     
    }
    J'ai un autre contructeur dans lequel je peux mettre de l'encodage mais c'est plus du java.io :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    com.ibm.ws.webservices.utils.BufferedWriter(out, os, enc)
    Que me conseillez vous d' utiliser pour préciser l'encodage pour un fichier texte simple à générer? J'y écris des chaine puis je fais des retour à la ligne?


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

Discussions similaires

  1. Comment convertir des fichiers texte Windows vers Unix
    Par hornetbzz dans le forum Contribuez
    Réponses: 17
    Dernier message: 11/02/2014, 14h46
  2. Réponses: 1
    Dernier message: 26/03/2010, 13h11
  3. Portage Windows vers Unix
    Par ouamtax dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 03/01/2008, 10h10
  4. FTP DE WINDOWS VERS UNIX
    Par noznoz78 dans le forum ASP
    Réponses: 1
    Dernier message: 29/03/2006, 22h06
  5. [Linux]différence de code de windows vers unix sous eclipse
    Par skywalker3 dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 05/01/2005, 14h11

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