Je lis un fichier CSV téléchargé sous forme de google trend, voici le contenu du fichier lorsqu’il est ouvert dans le bloc-notes (les deux premières lignes uniquement):
ferrari ferrari (erreur std)
0,735 2%
Lorsque je lis le fichier en utilisant readline, la ligne read contient un espace entre chaque caractère, dans le cas ci-dessus, le résultat est:
ferrariferrari (stderror)
0 7 3 5 2%
- Comment puis-je obtenir des résultats hadoop au format csv
- Comment renvoyer des données CSV dans le navigateur à partir du contrôleur Spring
- Créer et télécharger un fichier CSV Java (Servlet)
- Exporter mes données sur un fichier CSV depuis une application Android
- Convertir un fichier XML en fichier CSV en utilisant java
(Il y a des tabs entre “ferrari” et “ferrari” et entre 0.735 et 2%, ce qui n’est pas indiqué)
Le caractère de nouvelle ligne à la fin de chaque ligne est également lu deux fois. Qu’est-ce que c’est? Toute solution?
Voici le code que j’utilise pour lire le fichier:
BufferedReader Reader = new BufferedReader(new FileReader("trend.csv")); Ssortingng line = null; while ((line = Reader.readLine()) != null) System.out.println(line);
Edit: il y a aussi des caractères étranges lus au début du fichier
Edut: Vous avez la solution
C’était le problème d’encodage, a changé la première ligne en:
BufferedReader Reader = new BufferedReader(new InputStreamReader(new FileInputStream("trend.csv"), "UTF-16"));
C’est dû à l’encodage des caractères … Je viens de télécharger le fichier à partir de tendances et j’ai essayé, le problème était le même.
Je me débrouillais si j’utilisais le jeu de caractères UTF-16.
public class TrendReader { public static void main(Ssortingng args[]) throws Exception { //BufferedReader Reader = new BufferedReader(new FileReader("trends.csv")); BufferedReader Reader = new BufferedReader(new InputStreamReader(new FileInputStream("trends.csv"), "UTF-16")); Ssortingng line = null; while ((line = Reader.readLine()) != null) { System.out.println(line); } } }
Vous devez vérifier le codage du fichier et vous devez le spécifier lors de la lecture du fichier:
BufferedReader Reader = new BufferedReader(new InputStreamReader(new FileInputStream("trends.csv"), "UTF-8"));
Si vous attendez le fichier UTF-8 puis modifiez son codage, au lieu de votre code, vous pouvez utiliser n’importe quel lecteur CSV open source comme OpenOffice pour lire ce fichier et spécifier le codage lors de son ouverture 🙂