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