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 :
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!