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

Java Discussion :

[Encoding] Gérer un fichier avec un caractères "e dans l'o" (oe)


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de fedfil
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut [Encoding] Gérer un fichier avec un caractères "e dans l'o" (oe)
    Bonjour,

    Je rencontre des difficultés à générer un fichier plat contenant à partir d'une String contenant le fameux caractère "oe".

    J'ai essayé plusieurs encodings et aucun ne semble fonctionné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    body.getBytes("ISO-8859-1")
    transforme le caractère en "?"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    body.getBytes("ISO-8859-15")
    transforme le caractère en "½"

    Une idée ?

    Merci de votre aide!

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Si tu as un "?" c'est que l'encoding ne gère pas ce caractère.

    Si tu as autre chose c'est que tu relis pas avec le même encoding.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  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,


    Le "ISO-8859-15" comporte bien ce caractère.
    Tu as soit un problème d'affichage soit un problème de lecture de "body"...


    a++

  4. #4
    Membre confirmé Avatar de fedfil
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    En effet, le caractère 1/2 en 8859-1 a le même encoding que l'oe dans le 88-59-15 (http://en.wikipedia.org/wiki/ISO/IEC_8859-15)

    Donc, y a un hic dans le code.
    Pour plus d'information, le fichier est généré sous un serveur weblogic 8.1 avec un encoding en ISO-8859-1 (paramètre java: -Dfile.encoding=ISO-8859).

    Je reçois la donnée en webservices et je l'utilise pour l'afficher sur une page web (je gère le caractère en le transformant en HTML) et pour générer un fichier CSV via l'algo suivant : String Webservices -> StringBuffer -> Bytes.
    Le seul endroit où je ne maitrise pas l'encoding est l'utilisation du StringBuffer.

    Une idée ?

  5. #5
    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 fedfil Voir le message
    EJe reçois la donnée en webservices et je l'utilise pour l'afficher sur une page web (je gère le caractère en le transformant en HTML) et pour générer un fichier CSV via l'algo suivant : String Webservices -> StringBuffer -> Bytes.
    Le seul endroit où je ne maitrise pas l'encoding est l'utilisation du StringBuffer.
    Je ne sais pas ce que c'est que String Webservice.
    Mais un StringBuffer n'a pas d'encoding et donc il n'y a pas à en gérer à ce niveau-là.
    A priori, un truc qui s'appelle "String Webservice" ne devrait pas avoir d'encoding non plus. En Java, normalement pour que quelque chose s'appelle en String, il doit être basé sur String, donc pas d'encodage.

    Moi je dis, il faudrait creuser plus :
    - Quels sont les octets effectivement reçus du webservice ? Sont-ils capables de représenter le œ, et dans quel encodage ? Utiliser un sniffer réseau genre wireshark si nécessaire. Si c'est en HTTPS et qu'il est trop compliqué d'utiliser un sniffer, il va falloir, d'une manière ou d'une autre, faire que l'appli Java qui reçoit ces octets les enregistre quelque part. Pour consulter ensuite.

    - Comment ces octets sont ensuite transformés en String ou StringBuffer ?
    Il est obligatoire, pour ça, d'utiliser un encoding. Mais est-ce le bon qui est utilisé ? Comment est-ce décidé ? Est-ce indiqué par le protocole du webservice ? Est-ce configurable ? Est-ce un truc en dur, ou bien un encoding par défaut ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre confirmé Avatar de fedfil
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Par défaut
    Bonjour,

    Je n'ai pas été très clair.

    Ce que j'appelle un objet String Webservices est un objet String d'un objet skeleton généré par Axis 1.2

    Le webservices est correct car les caractères spéciaux sont gérés en HTML.
    Je pense que l'erreur se situe au niveau du bidding géré par Axis qui se charge de transformer l'enveloppe en objet skeleton mais je n'arrive pas à modifer l'encoding de l'outil.

    Bref, ce n'est pas être pas un problème "Général Java"

  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
    Citation Envoyé par fedfil Voir le message
    Le webservices est correct car les caractères spéciaux sont gérés en HTML.
    Mais encore ?

    Si le protocole est correctement utilisé, Axis a très, très peu de chances de se tromper dans la transformation octets -> String.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Gérer des fichiers avec un seul log4j.properties
    Par mimish dans le forum Général Java
    Réponses: 7
    Dernier message: 06/02/2011, 14h00
  2. lecture d'un fichier avec des caractères spéciaux
    Par Invité dans le forum SAS Base
    Réponses: 24
    Dernier message: 20/01/2011, 09h50
  3. Noms de fichiers avec des caractères spéciaux
    Par weabow dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/11/2010, 15h51
  4. Copie d'un fichier avec des caractères spéciaux
    Par totofe dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 15/09/2010, 12h28
  5. [XML][ENCRYPTION] encoder des gros fichiers avec AES_128
    Par marcsaker dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 29/09/2006, 09h18

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