Maison  >  Article  >  Java  >  Des caractères tronqués apparaissent lors de la lecture de fichiers texte en Java

Des caractères tronqués apparaissent lors de la lecture de fichiers texte en Java

王林
王林original
2019-11-28 11:18:591850parcourir

Des caractères tronqués apparaissent lors de la lecture de fichiers texte en Java

J'ai récemment rencontré un problème. Java lit les fichiers texte (tels que les fichiers csv, txt, etc.), et lorsqu'il rencontre le chinois, il devient tronqué. Lisez le code comme suit :

List<String> lines=new ArrayList<String>();  
BufferedReader br = new BufferedReader(new FileReader(fileName));
String line = null;
while ((line = br.readLine()) != null) { 
      lines.add(line);
}
br.close();

Tutoriels vidéo associés recommandés : Java online learning

Principe :

Java Le traitement de la classe I/O est comme indiqué dans la figure :

Des caractères tronqués apparaissent lors de la lecture de fichiers texte en Java

La classe Reader est la classe parent pour lire les caractères dans les E/S Java, et la classe InputStream est la classe parent pour la classe de lecture des octets, la classe InputStreamReader est le pont qui associe les octets aux caractères. Elle est responsable du traitement de la conversion des octets de lecture en caractères lors du processus d'E/S, et du décodage spécifique des octets en caractères. est implémenté par StreamDecoder. Le format d'encodage Charset doit être spécifié par l'utilisateur lors du processus de décodage StreamDecoder.

Il convient de noter que si vous ne spécifiez pas Charset, le caractère par défaut défini dans l'environnement local sera utilisé, par exemple, l'encodage GBK sera utilisé dans l'environnement chinois.

Résumé : Lorsque Java lit le flux de données, vous devez spécifier la méthode d'encodage du flux de données, sinon le jeu de caractères par défaut dans l'environnement local sera utilisé.

Après l'analyse ci-dessus, le code modifié est le suivant :

List<String> lines=new ArrayList<String>();
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"UTF-8"));
String line = null;
while ((line = br.readLine()) != null) {
      lines.add(line);
}
br.close();

Si vous souhaitez en savoir plus sur les didacticiels connexes, vous pouvez visiter : Démarrer avec Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn