Heim >Java >JavaBase >Gründe und Lösungen für das Lesen verstümmelter chinesischer Zeichen in Java-Dateien

Gründe und Lösungen für das Lesen verstümmelter chinesischer Zeichen in Java-Dateien

尚
Original
2019-11-29 09:30:304754Durchsuche

Gründe und Lösungen für das Lesen verstümmelter chinesischer Zeichen in Java-Dateien

Ich bin kürzlich auf ein Problem beim Lesen von Textdateien (z. B. CSV-Dateien, TXT-Dateien usw.) gestoßen, und wenn ich auf Chinesisch stoße, wird es verstümmelt. (Empfohlen: Java-Video-Tutorial)

Lesen Sie den Code wie folgt:

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

Prinzip

Die I/O-Klassenverarbeitung von Java ist wie im gezeigt Abbildung:

Die Reader-Klasse ist die übergeordnete Klasse zum Lesen von Zeichen in Java I/O, und die InputStream-Klasse ist die übergeordnete Klasse zum Lesen von Bytes. Die InputStreamReader-Klasse ist die Brücke, die Bytes mit Zeichen verknüpft Verantwortlich für die Verarbeitung während des E/A-Prozesses. Die Konvertierung von Lesebytes in Zeichen und die spezifische Decodierung von Bytes in Zeichen werden von StreamDecoder implementiert.

Das Charset-Kodierungsformat muss vom Benutzer während des StreamDecoder-Dekodierungsprozesses angegeben werden. Beachten Sie, dass der Standardzeichensatz in der lokalen Umgebung verwendet wird, wenn Sie keinen Zeichensatz angeben. In der chinesischen Umgebung wird beispielsweise die GBK-Codierung verwendet.

Gründe und Lösungen für das Lesen verstümmelter chinesischer Zeichen in Java-Dateien

Zusammenfassung: Wenn Java den Datenstrom liest, müssen Sie die Codierungsmethode des Datenstroms angeben, andernfalls wird der Standardzeichensatz in der lokalen Umgebung verwendet.

Nach der obigen Analyse lautet der geänderte Code wie folgt:

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

Für weitere Java-Kenntnisse beachten Sie bitte die Spalte Java Basic Tutorial.

Das obige ist der detaillierte Inhalt vonGründe und Lösungen für das Lesen verstümmelter chinesischer Zeichen in Java-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn