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 :

Charset et lecture de fichiers.


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut Charset et lecture de fichiers.
    Bonjour à tous.

    Comme le titre l'indique, j'ai un soucis de charset que je dois régler.
    Mon application doit pouvoir lire un fichier Excel (via JXL) envoyé par formulaire et retranscrire son contenu en DB.

    Il faut savoir que le fichier Excel est encodé en Cp1252 (format standard pour ce type de fichier) et que ma DB est en UTF-8.
    Et même plus exactement: le fichier excel proviendra toujours d'un pc sur Windows et le serveur web ainsi que le DB tournent sur Linux.

    En fait ma stratégie pour résoudre le problème était simplement de lire le fichier excel et ensuite pour chaque donnée la convertir en UTF-8. Malheureusement, j'ai essayé plusieurs choses mais je n'y suis pas arrivé.

    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
    20
    21
    22
    23
    24
     
        static {
            Charset utf8 = Charset.forName("UTF-8");
            Charset cp1252 = Charset.forName("Cp1252");
     
            utf8Decoder = utf8.newDecoder();
            cp1252Encoder = cp1252.newEncoder();
        }
     
     
    	public static String convert(String unicodeString) {
            if (unicodeString == null){
                  return null;
            }
            try {
                  ByteBuffer utf8Buffer = cp1252Encoder.encode(CharBuffer.wrap(unicodeString.toCharArray()));
                  CharBuffer decodedBuffer = utf8Decoder.decode(utf8Buffer);
     
                  return decodedBuffer.toString();
            } catch (CharacterCodingException e){
                  logger.error("Unable to convert : "+unicodeString,e);
            }
    	        return null;
    	  }
    En fait je pense tout simplement que je m'y prend mal mais je vous avoue que ces notions de charset m'ont toujours fortement embêté.

    Pourriez-vous m'aider?

    Merci d'avance!

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Les objets Strings sont toujours sont encodées en UTF-16. Donc il faut te soucier de l'encodage au moment de la lecture et de l'écriture.
    La plupart des fonction d'IO font donc implicitement la conversion UTF-16 vers l'encodage par défaut du système qui exécute la JVM(Cp1252 pour windows, utf-8 pour Linux). Si tu veux un autre encodage il faut le préciser

    Par exemple pour lire un fichier Cp1252:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Reader r = new InputStreamReader(new FileInputStream("monFichierCp1252.txt"), "ISO-8859-1")
    Remarque: j'ai utilisé ISO-8859-1 plutôt que Cp1252. Je ne sais pas si toutes les JVM supportent l'encodage Cp1252, en tout cas il ne fait pas partie de ceux cité dans la javadoc

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    Merci pour ta réponse, je venais de trouver la solution et de comprendre le concept en fait.
    Venant du monde PHP ce n'est pas totalement identique

    Merci.

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

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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