Bonjour,
j'ai une application qui extrait des données d'une DB pour en faire des fichiers Xml. Cette application génères plus de 36000 fichiers. Sur ces 36000 fichiers j'en ai +- 1000 qui, lorsqu'ils sont ouvert avec notepad++ sont reconnus comme étant encodé en ANSI au lieu d'être encodé en UTF-8.
Je précise que ces fichiers n'ont rien de particulier. Ils ne contiennet pour la pluspart que des informations de base contenu dans tout les produits (le plus gros fait 56k alors que la taille moyenne des fichiers est de 112k).
Quelqu'un aurait une idée de la raison pour laquelle ces fichiers ne sont pas considéré comme utf-8 ?
Ici, un exemple de fichier considéré comme ansi : http://www.megaupload.com/?d=IUK7VUSE
A noter que lorsque je le convertit en UTF-8 via notepad++, je n'ai aucune différence visible et si je sauve le fichier convertit et que je le réouvre, l'encodage est de nouveau ANSI
Ici un exemple du code utilisé pour sauver les fichiers (inclus dans une classe de test qui lit et sauve le fichier)
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
41
42
43
44
45
46
47
48
49
50
51
52
53 public class test { public static void main(String[] args) { // parseFile("C:/existXml/nl/"); // String tmp = loadFile("c:/existxml/fr/2089-829fr.xml"); // String tmp = loadFile("c:/existxml/test.txt"); String tmp = loadFile("c:/temp/0013-219nl.xml"); saveToFile("c:/temp/0013-219nlUTF.xml", tmp, true); } public static String loadFile(String f) { try { //InputStreamReader b = new InputStreamReader(new FileInputStream(new File(f)), "UTF-8"); //BufferedReader br = new BufferedReader(b); BufferedReader br = new BufferedReader(new FileReader(new File(f))); String result =""; String line; while ((line = br.readLine()) != null ) { result = result + line; } return result; } catch (Exception ie) { ie.printStackTrace(); return null; } } private static void saveToFile(String FileName, String content, boolean isUTF) { try { FileOutputStream out = new FileOutputStream(FileName); OutputStreamWriter writer = new OutputStreamWriter(new BufferedOutputStream(out), "UTF-8"); // OutputStreamWriter writer = new OutputStreamWriter(new BufferedOutputStream(out)); BufferedWriter w = new BufferedWriter(writer); System.out.println(content); if (isUTF) w.write(content); else w.write(content); w.flush(); w.close(); out.close(); } catch (Exception e) { e.printStackTrace(); } } }
Partager