Ta méthode est pratiquement correcte.
Il faut remplacer
par
new String(rawToByte, leCharsetDesOctets);
comme par exemple
new String(rawToByte, "windows-1252");
si les octets sont en ANSI.
À part ça c'est correct.
La ligne :
rawToByte[i] = (byte) (Integer.parseInt(chunk,16) & 0x000000FF);
peut être simplifiée en :
rawToByte[i] = (byte) Integer.parseInt(chunk,16);
puisque le cast vers byte fait exactement le même mask de toute façon.
De plus, c'était pas la peine de le coder toi-même, tu aurais pu juste prendre la bibliothèque Apache Commons Codec.
Envoyé par
safi11
Sauf que dans le résultat obtenue un haxa "81" est convertie en "?" et quand je convertit "?" en hexa ça me retourne "3f". En cherchant j'ai compris que je dois utiliser l'encodage ANSI pour pouvoir convertir les bytes > 128 si je ne dis pas de bêtises
Euh, en principe oui, mais l'hexa 81 n'a pas de sens en ANSI. Du coup, Java ne peut pas lui associer un caractère, et il met ? à la place, c'est logique.
Tu es sûr que c'est de l'ANSI ? On peut le voir, cet hexa qui pose problème ?
Partager