Maison >Java >JavaBase >Raisons et solutions pour lire les caractères chinois tronqués dans les fichiers Java

Raisons et solutions pour lire les caractères chinois tronqués dans les fichiers Java

尚
original
2019-11-29 09:30:304754parcourir

Raisons et solutions pour lire les caractères chinois tronqués dans les fichiers 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é. (Recommandé : tutoriel vidéo Java)

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();

Principe

Le traitement des classes d'E/S de Java est tel qu'indiqué dans le figure :

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 lire les octets. La classe InputStreamReader est le pont qui associe les octets aux caractères. responsable du traitement pendant le processus d'E/S. La conversion des octets de lecture en caractères et le décodage spécifique des octets en caractères sont implémentés 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, dans l'environnement chinois, le codage GBK sera utilisé.

Raisons et solutions pour lire les caractères chinois tronqués dans les fichiers Java

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();

Pour plus de connaissances sur Java, veuillez faire attention à la colonne Tutoriel de base 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