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 :

Encoding System et CharsetDefault : problème d'encodage


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut Encoding System et CharsetDefault : problème d'encodage
    Hello,

    J'ai un petit problème d'encodage dans un programme java, suite à une migration de serveur (solaris 2.8 -> solaris 5.10) et un changement de JVM (1.2 -> 1.5)

    Après avoir fouiner un peu, voila ce que j'ai trouvé :

    Sur mon ancien environnement (là où tout fonctionne miraculeusement)
    - encoding System est ASCII (ISO646), obtenu avec un System.getProperty
    - DefaultCharset est CP1252 (ANSI si je ne me trompe)
    Et si j'ai bien compris, ma JVM tourne avec l'encodage CP1252.

    Sur mon nouvel environnement (là où tout s'éffondre ...)
    - encoding System ASCII
    - DefaultCharset ASCII

    Forcement, si mon appli recherche le "fameux caractère tordu", celui que je trouvais en Cp1252, elle ne le trouve plus en ASCII ...

    Sur le nouvel environnement, si j'ajoute "-Dfile.encoding=Cp1252" quand je lance, ça fonctionne ... mais ça ne me plait pas plus que cela.

    J'ai tenté des petits décodeurs dans mon code, sans succès.

    Je suis tributaire (esclave ???) des environnements imposés (et pas très bien maîtrisés) sur lesquels je travaille ... cela va sans dire ...

    --> L'encoding de la JVM dépend il de celui du système ?
    --> Si oui, comment peut on modifier l'encoding system de solaris 5.10 ?
    --> Est il possible de paramétrer / forcer l'encoding de la JVM ? Sur la globalité du prog ?

    D'avance merci ... je ne sais même plus où chercher ...

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Bonjour,

    sans grand conviction tu a une propriété System

    dans mon cas
    sun.jnu.encoding : Cp1252

    si tu fait
    System.setProperty("sun.jnu.encoding", "Cp1252");
    après il est plutôt conseillé de spécifier l'encodage sur test flux

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Mars 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 2
    Par défaut
    J'ai malheureusement déjà essayer !
    Le fait est que le System.setProperty de l'encoding va bien modifier la valeur de la property ... sans modifier aucunement l'encoding utilisé par la JVM (à mon avis, une fois qu'elle est lancée, elle ne va pas retester les variables system ...)

    Quant à spécifier l'encodage sur le flux ... je n'arrive pas à forcer l'InputStream en Cp1252.

    Des idées ??

  4. #4
    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 clochette_01 Voir le message
    Quant à spécifier l'encodage sur le flux ... je n'arrive pas à forcer l'InputStream en Cp1252.
    Un InputStream est un flux de bytes. Il se fiche complètement de l'encodage employé, et donnera toujours les mêmes résultats dans tous les cas.

    C'est quand tu veux transformer des bytes en String, et vice-versa, qu'il faut forcer un encodage précis (sinon la JVM utilise son encodage par défaut, dépendant de l'environnement.)

    Citation Envoyé par clochette_01 Voir le message
    Des idées ??
    J'ai toujours trouvé que "-Dfile.encoding=Cp1252" marchait plutôt bien, pour mettre au pas les bouts de code qui refusent de spécifier un encodage autre que celui par défaut.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [CSV] Problème d'encodage
    Par simoryl dans le forum Langage
    Réponses: 13
    Dernier message: 18/04/2012, 15h20
  2. Problème d'encodage, comment utiliser Encoding?
    Par Tenguryu dans le forum C#
    Réponses: 3
    Dernier message: 01/09/2008, 00h37
  3. Problème d'encodage en Unicode
    Par Skreo dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/12/2005, 10h43
  4. Problème d'encodage sur MySql 4.1
    Par Blanchet dans le forum Outils
    Réponses: 1
    Dernier message: 04/12/2005, 04h53
  5. [XML::PARSER] Problème d'encodage
    Par frangin2003 dans le forum Modules
    Réponses: 13
    Dernier message: 05/09/2005, 14h59

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