Analyser le fichier CSV contenant un caractère Unicode à l'aide de OpenCSV
Je suis en train d'analyser une .fichier csv avec OpenCSV dans NetBeans 6.0.1. Mon fichier contient des caractères Unicode. Quand j'écris en sortie le caractère apparaît sous une autre forme, comme (HJ1'-E/;). Quand j'ouvre ce fichier dans le bloc-notes, il semble ok.
Le code que j'ai utilisé:
CSVReader reader=new CSVReader(new FileReader("d:\\a.csv"),',','\'',1);
String[] line;
while((line=reader.readNext())!=null){
StringBuilder stb=new StringBuilder(400);
for(int i=0;i<line.length;i++){
stb.append(line[i]);
stb.append(";");
}
System.out.println( stb);
}
OriginalL'auteur meysam_pro | 2009-11-08
Vous devez vous connecter pour publier un commentaire.
Vous devez d'abord savoir ce que l'encodage de votre fichier est en cours, tel que UTF-8 ou UTF-16. Quelle est la génération de ce fichier pour commencer?
Après ça, c'est relativement simple: vous devez créer un
FileInputStream
enveloppé dans unInputStreamReader
au lieu de seulement unFileReader
. (FileReader
utilise toujours le codage par défaut pour le système.) Spécifier l'encodage à utiliser lorsque vous créez leInputStreamReader
, et si vous avez choisi la bonne, tout devrait commencer à travailler.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 d'imprimer le tout. Je ne suis pas sûr que j'avais confiance
System.out
pour être en mesure de gérer les caractères non-ASCII cependant, vous voudrez peut-être trouver un autre moyen de l'examen des chaînes, telles que l'impression des valeurs individuelles des personnages comme des entiers (de préférence en hexadécimal) puis en les comparant avec les les graphiques à unicode.org. D'autre part, vous pouvez essayer le droit d'encodage et de voir ce qui se passe pour commencer...EDIT: d'Accord, donc si vous êtes en utilisant UTF-8:
(J'espère que vous avez un try/finally bloc pour fermer le fichier dans votre code réel.)
The constructor CSVReader(InputStreamReader, char) is undefined
avec cette solutionMon code n'essayez pas d'appeler un tel constructeur, il tente d'appeler
CSVReader(InputStreamReader, char, char, int)
. N' que pour vous?Même dans ce cas , se même erreur. Je suis à l'aide de OpenCSV4.1 et de son constructeur n'a pas ce constructeur
En regardant la documentation et de la source, il devrait être là, mais obsolète. Pensez à utiliser CSVReaderBuilder à la place.
OriginalL'auteur Jon Skeet