Bonjour à tous.
Comme le titre l'indique, j'ai un soucis de charset que je dois régler.
Mon application doit pouvoir lire un fichier Excel (via JXL) envoyé par formulaire et retranscrire son contenu en DB.
Il faut savoir que le fichier Excel est encodé en Cp1252 (format standard pour ce type de fichier) et que ma DB est en UTF-8.
Et même plus exactement: le fichier excel proviendra toujours d'un pc sur Windows et le serveur web ainsi que le DB tournent sur Linux.
En fait ma stratégie pour résoudre le problème était simplement de lire le fichier excel et ensuite pour chaque donnée la convertir en UTF-8. Malheureusement, j'ai essayé plusieurs choses mais je n'y suis pas arrivé.
En fait je pense tout simplement que je m'y prend mal mais je vous avoue que ces notions de charset m'ont toujours fortement embêté.
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
16
17
18
19
20
21
22
23
24 static { Charset utf8 = Charset.forName("UTF-8"); Charset cp1252 = Charset.forName("Cp1252"); utf8Decoder = utf8.newDecoder(); cp1252Encoder = cp1252.newEncoder(); } public static String convert(String unicodeString) { if (unicodeString == null){ return null; } try { ByteBuffer utf8Buffer = cp1252Encoder.encode(CharBuffer.wrap(unicodeString.toCharArray())); CharBuffer decodedBuffer = utf8Decoder.decode(utf8Buffer); return decodedBuffer.toString(); } catch (CharacterCodingException e){ logger.error("Unable to convert : "+unicodeString,e); } return null; }
Pourriez-vous m'aider?
Merci d'avance!![]()
Partager