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 dadresse ==> 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");
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;
}
Or voici ce que j'obtiens pour le tiret et l'apostrophe:
–
Â’

Ce ne sont pas les caractères - et ' souhaités.

Avez vous une idée de comment effectuer cette manip svp?

Merci