J’essaie d’parsingr un fichier .csv avec OpenCSV dans NetBeans 6.0.1. Mon fichier contient des caractères Unicode. Lorsque je l’écris en sortie, le caractère apparaît sous une autre forme, comme (HJ1′-E /;). Quand j’ouvre ce fichier dans le Bloc-notes, tout semble aller pour le mieux.
Le code que j’ai utilisé:
CSVReader reader=new CSVReader(new FileReader("d:\\a.csv"),',','\'',1); Ssortingng[] line; while((line=reader.readNext())!=null){ SsortingngBuilder stb=new SsortingngBuilder(400); for(int i=0;i<line.length;i++){ stb.append(line[i]); stb.append(";"); } System.out.println( stb); }
Vous devez d’abord connaître l’encodage de votre fichier, comme UTF-8 ou UTF-16. Qu’est-ce qui génère ce fichier pour commencer?
Après cela, c’est relativement simple: vous devez créer un FileInputStream
dans un InputStreamReader
au lieu d’un simple FileReader
. ( FileReader
utilise toujours le codage par défaut du système.) Spécifiez le codage à utiliser lors de la création de InputStreamReader
. Si vous avez sélectionné le bon, tout devrait commencer à fonctionner.
Notez que vous n’avez pas besoin d’utiliser OpenCSV pour vérifier cela – vous pouvez simplement lire le texte du fichier vous-même et l’imprimer. Je ne suis pas sûr que je ferais confiance à System.out
pour pouvoir gérer les caractères non-ASCII – vous voudrez peut-être trouver une autre façon d’examiner les chaînes, telles que l’affichage des valeurs individuelles des caractères sous forme d’entiers (de préférence en hexadécimal). ) puis en les comparant avec les graphiques de unicode.org . D’autre part, vous pouvez essayer le bon encodage et voir ce qui se passe au début …
EDIT: OK, donc si vous utilisez UTF-8:
CSVReader reader=new CSVReader( new InputStreamReader(new FileInputStream("d:\\a.csv"), "UTF-8"), ',', '\'', 1); Ssortingng[] line; while ((line = reader.readNext()) != null) { SsortingngBuilder stb = new SsortingngBuilder(400); for (int i = 0; i < line.length; i++) { stb.append(line[i]); stb.append(";"); } System.out.println(stb); }
(J'espère que vous avez un bloc try / finally pour fermer le fichier dans votre vrai code.)