Le but est de lire un fichier encodé en ISO 8859_2.
Ca, a priori pas de problème.
Ensuite il faut remplacer des caractères spécifiques à l'ISO 8859_2 par des caractères ISO 8859_1 non accentués : là çà coince malgré pas mal de manips (manipulations de tableaux de bytes, des String directement, avec ou sans des variables char, avec ou sans le codage des caractères en unicode type '\uXXXX', string.replace(), etc...).
Pour finalement enregistrer ça en ISO 8859_1, ce qui marche a priori.
Le code actuel est le suivant, avec la partie volontairement manquante de remplacement de caractères qui ne marche de toute manière pas.. :
Des idées sur le sujet pour faire le remplacement de ces foutus caractères ?
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public static void convertFile(String pathInputFile, String pathOutputFile, String fromEncoding, String toEncoding) { try { InputStream in = new FileInputStream(pathInputFile); OutputStream out = new FileOutputStream(pathOutputFile); String from = fromEncoding; String to = toEncoding; InputStreamReader iptBis = new InputStreamReader(in, from); System.out.println("encodage en lecture : " + iptBis.getEncoding()); Reader r = new BufferedReader(iptBis); OutputStreamWriter optBis = new OutputStreamWriter(out, to); System.out.println("encodage en écriture : " + optBis.getEncoding()); Writer w = new BufferedWriter(optBis); char[] buffer = new char[4096]; int len; while((len = r.read(buffer)) != -1) { // ICI on doit effectuer la conversion des caractères incorrectes } w.write(buffer, 0, len); } } catch(FileNotFoundException fnfe) { System.out.println("convertFile FileNotFoundException ****** ERREUR GRAVE DU BATCH : "+ fnfe.toString()); fnfe.printStackTrace(); } catch(UnsupportedEncodingException uese) { System.out.println("convertFile UnsupportedEncodingException ****** ERREUR GRAVE DU BATCH : "+ uese.toString()); uese.printStackTrace(); } catch(IOException ioe) { System.out.println("convertFile IOException ****** ERREUR GRAVE DU BATCH : "+ ioe.toString()); ioe.printStackTrace(); } }
Partager