Ajouter un commentaire

Flexx
Encodage de caractères

Bonjour

Dans une application, je reçois une chaine de caractère avec pour entete 0x15 0xC0, visiblement encodé en UTF-8 puisque lorsque j'affiche la valeur décimale j'obtiens 65533 au lieu de 192.

Je cherche donc à convertir cet entete en ISO et je vérifie que j'obtiens bien en décimal 21(0x15) et 192(0xC0).

Le problème, c'est que j'obtiens 63 au lieu de 192 !
L'exemple ci-dessous montre la conversion effectuée.

String stringUTF8 = new String(new byte[] {0x15, (byte)0xC0}, "UTF-8");		
char [] myTabDonneesUTF8 = stringUTF8.toCharArray();
			
System.out.println(myTabDonneesUTF8);
System.out.println("1er caract = " + myTabDonneesUTF8[0] + "   : " + (int)(myTabDonneesUTF8[0]));
System.out.println("2eme caract = " + myTabDonneesUTF8[1] + "   : " + (int)(myTabDonneesUTF8[1]));
 
 
String stringISO = new String (stringUTF8.getBytes(), "ISO-8859-1" );
char [] myTabDonneesISO = stringISO.toCharArray();
 
System.out.println(myTabDonneesISO);
System.out.println("1er caract = " + myTabDonneesISO[0] + "   : " + (int)(myTabDonneesISO[0]));
System.out.println("2eme caract = " + myTabDonneesISO[1] + "   : " + (int)(myTabDonneesISO[1]));

Il doit y avoir un problème de dépassement qqpart (255 - 63 = 192).

Pouvez-vous m'éclairer sur ce sujet ?

Merci d'avance

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  CCC  X   X  TTTTTT  L      QQQ   
C X X TT L Q Q
C X TT L Q Q
C X X TT L Q QQ
CCC X X TT LLLL QQQQ
Q