Bonjour,
je cherche à comprendre comment transformer un caractère encodé autre que UTF-8 dans son équivalent UTF-8
Mon exemple:
Je souhaite transformer cette chaîne
Info – changement d’adresse ==> Info - changement d'adresse
Le tiret et l'apostrophe sont encodés en WINDOWS-1252 (à priori) et si je les stocke ainsi, il ne seront pas reconnus pour une utilisation future puisque je gère uniquement de l'UTF-8
J'ai utilisé l'API juniversalchardet pour reconnaître l'encodage des caractères (ce n'est pas du 100% je suis d'accord, mais c'est toujours ça).
J'ai ensuite tenté cette manip consistant à manipulet des byte pour transformer en UTF-8:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 //c = un caractère String //encoding = encodage trouvé par juniversalchardet String newString = new String(decodeUtf8(c.getBytes(),encoding), "UTF-8");Or voici ce que j'obtiens pour le tiret et l'apostrophe:
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 private static byte[] decodeUtf8(byte[] bytes, String sourceCharset){ Charset srcCharset = Charset.forName(sourceCharset); Charset utf8charset = Charset.forName("UTF-8"); ByteBuffer inputBuffer = ByteBuffer.wrap(bytes); // decoder selon l'encodage en parametre CharBuffer data = srcCharset.decode(inputBuffer); // encoder en utf-8 ByteBuffer outputBuffer = utf8charset.encode(data); byte[] outputData = outputBuffer.array(); return outputData; }
–
Â’
Ce ne sont pas les caractères - et ' souhaités.
Avez vous une idée de comment effectuer cette manip svp?
Merci
Partager