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 :

Convertir le cp1252 en iso-8859-1


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut Convertir le cp1252 en iso-8859-1
    Bonjour,

    En PHP, j'utilise une méthode pour convertir les caractères cp1252 des saisies utilisateurs en iso-8859-1.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    function purge_iso88591($str)
    {
    	$cp1252_map = array(
    	   "\x80" => "€", /* EURO SIGN */
    	   "\x82" => "‚", /* SINGLE LOW-9 QUOTATION MARK */
    	   "\x83" => "ƒ",     /* LATIN SMALL LETTER F WITH HOOK */
    	   "\x84" => "„", /* DOUBLE LOW-9 QUOTATION MARK */
    	   "\x85" => "…", /* HORIZONTAL ELLIPSIS */
    	   "\x86" => "†", /* DAGGER */
    	   "\x87" => "‡", /* DOUBLE DAGGER */
    	   "\x88" => "ˆ",     /* MODIFIER LETTER CIRCUMFLEX ACCENT */
    	   "\x89" => "‰", /* PER MILLE SIGN */
    	   "\x8a" => "Š",   /* LATIN CAPITAL LETTER S WITH CARON */
    	   "\x8b" => "‹", /* SINGLE LEFT-POINTING ANGLE QUOTATION */
    	   "\x8c" => "Œ",   /* LATIN CAPITAL LIGATURE OE */
    	   "\x8e" => "Ž",   /* LATIN CAPITAL LETTER Z WITH CARON */
    	   "\x91" => "‘", /* LEFT SINGLE QUOTATION MARK */
    	   "\x92" => "’", /* RIGHT SINGLE QUOTATION MARK */
    	   "\x93" => "“", /* LEFT DOUBLE QUOTATION MARK */
    	   "\x94" => "”", /* RIGHT DOUBLE QUOTATION MARK */
    	   "\x95" => "•", /* BULLET */
    	   "\x96" => "–", /* EN DASH */
    	   "\x97" => "—", /* EM DASH */
     
    	   "\x98" => "˜",   /* SMALL TILDE */
    	   "\x99" => "™", /* TRADE MARK SIGN */
    	   "\x9a" => "š",   /* LATIN SMALL LETTER S WITH CARON */
    	   "\x9b" => "›", /* SINGLE RIGHT-POINTING ANGLE QUOTATION*/
    	   "\x9c" => "œ",   /* LATIN SMALL LIGATURE OE */
    	   "\x9e" => "ž",   /* LATIN SMALL LETTER Z WITH CARON */
    	   "\x9f" => "Ÿ"    /* LATIN CAPITAL LETTER Y WITH DIAERESIS*/
    	);
     
    	return strtr($str, $cp1252_map);
    }
    Je n'arrive pas à faire la même fonction en Java, car je ne sais pas comment écrire les caractères du type "\x80" (séquence d'échappement non valide).

    Avez-vous une idée de comment procéder ? Merci.

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    En java pour les hexas dans les chaînes il faut utiliser u. En effet, les caractères en java sont tous en unicode.

    Cela donne par exemple : "\u0080" => "€", /* EURO SIGN */.

    Si tu as des bytes alors le x fonctionne : byte esc = 0x1b;.

    Sinon, par des éléments de la classe String, ou par java.io, ou par java.nio.charset, tu pourrais faire faire ces conversions par la mécanique java.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Si tu as plus d'infos sur les méthodes disponibles nativement pour faire ça, je suis intéressé car je n'ai pas trouvé comment faire. Merci beaucoup en tout cas.

  4. #4
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Un exemple indicatif rapide avec nio :
    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
     
    in = new File(nomfichier);
    inlength = in.length();
    inf = new FileInputStream(in);
    ouf = new FileOutputStream(tmp);
    inc = inf.getChannel();
    ouc = ouf.getChannel();
    inmap = inc.map(FileChannel.MapMode.READ_ONLY, 0, inlength);
    codein = Charset.forName(encodageEntree).newDecoder();
    cbin = codein.decode(inmap);
    codeout = Charset.forName(encodageSortie).newEncoder();
    cout = codeout.encode(cbin);
    ouc.write(cout);
    inc.close();
    ouc.close();
    ... il te transforme n'importe quel fichier texte d'encoding encodageEntree en n'importe quel fichier texte d'encoding encodageSortie.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  5. #5
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    byte[] caracteresCP1252 = null; // recuperer les valeurs ici
    String texteIndependantDuCharset = new String(caracteresCP1252,"windows-1252");
    byte[] caracteresISO88591 = texteIndependantDuCharset.getBytes("ISO-8859-1");
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

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

Discussions similaires

  1. convertir encoding de type "ISO-8859-1"
    Par zied87 dans le forum Windows Phone
    Réponses: 12
    Dernier message: 12/08/2011, 11h13
  2. Convertir de ISO-8859-1 en UTF-8
    Par nico2006 dans le forum C++
    Réponses: 5
    Dernier message: 19/03/2009, 01h18
  3. Convertir une chaîne utf8 en iso-8859-1
    Par dredre dans le forum ASP
    Réponses: 1
    Dernier message: 05/05/2006, 00h48
  4. Convertir une chaine UTF8 en ISO-8859-1
    Par eods dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/08/2004, 16h57

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