Heim > Java > JavaBase > Hauptteil

Lösung für verstümmelte Zeichen beim Lesen von TXT-Dateien in Java

Freigeben: 2019-11-30 09:38:32
Original
6931 Leute haben es durchsucht

Lösung für verstümmelte Zeichen beim Lesen von TXT-Dateien in Java

Java liest die TXT-Datei. Wenn das Codierungsformat nicht übereinstimmt, werden verstümmelte Zeichen angezeigt. Daher müssen Sie beim Lesen von TXT-Dateien die Lesekodierung festlegen. Das Codierungsformat von TXT-Dokumenten wird in den Dateiheader geschrieben. Nach dem Abrufen des Codierungsformats werden beim Lesen der Datei keine verstümmelten Zeichen erzeugt. (Empfohlen: Java-Video-Tutorial)

Java-Kodierung entspricht TXT-Kodierung:

Lösung für verstümmelte Zeichen beim Lesen von TXT-Dateien in Java

Beispiel:

package com.lfl.attachment;  
  
import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
  
public class TextMain {  
  
    public static void main(String[] args) throws Exception {  
        String filePath = "D:/article.txt";  
//      String filePath = "D:/article333.txt";    
//      String filePath = "D:/article111.txt";    
        String content = readTxt(filePath);  
        System.out.println(content);  
          
    }  
  
      
      
    /** 
     * 解析普通文本文件  流式文件 如txt 
     * @param path 
     * @return 
     */  
    @SuppressWarnings("unused")  
    public static String readTxt(String path){  
        StringBuilder content = new StringBuilder("");  
        try {  
            String code = resolveCode(path);  
            File file = new File(path);  
            InputStream is = new FileInputStream(file);  
            InputStreamReader isr = new InputStreamReader(is, code);  
            BufferedReader br = new BufferedReader(isr);  
//          char[] buf = new char[1024];  
//          int i = br.read(buf);  
//          String s= new String(buf);  
//          System.out.println(s);  
            String str = "";  
            while (null != (str = br.readLine())) {  
                content.append(str);  
            }  
            br.close();  
        } catch (Exception e) {  
            e.printStackTrace();  
            System.err.println("读取文件:" + path + "失败!");  
        }  
        return content.toString();  
    }  
      
      
      
    public static String resolveCode(String path) throws Exception {  
//      String filePath = "D:/article.txt"; //[-76, -85, -71]  ANSI  
//      String filePath = "D:/article111.txt";  //[-2, -1, 79] unicode big endian  
//      String filePath = "D:/article222.txt";  //[-1, -2, 32]  unicode  
//      String filePath = "D:/article333.txt";  //[-17, -69, -65] UTF-8  
        InputStream inputStream = new FileInputStream(path);    
        byte[] head = new byte[3];    
        inputStream.read(head);      
        String code = "gb2312";  //或GBK  
        if (head[0] == -1 && head[1] == -2 )    
            code = "UTF-16";    
        else if (head[0] == -2 && head[1] == -1 )    
            code = "Unicode";    
        else if(head[0]==-17 && head[1]==-69 && head[2] ==-65)    
            code = "UTF-8";    
            
        inputStream.close();  
          
        System.out.println(code);   
        return code;  
    }  
      
}
Nach dem Login kopieren

Hinweis: In der Methode „resolveTxt“ kann der InputStream-Stream nicht durch die Methode „readTxt“ geleitet werden. Dies führt dazu, dass die beiden Methoden dieselbe Stream-Referenz enthalten, und in der Methode „resolveTxt“ wurden drei Bytes im Stream gelesen und die Position eingegeben Der Stream wurde bereits gelesen, nicht die Startposition des Streams. Beim Einlesen von readTxt tritt IOException auf: Lesefehler.

Weitere Java-Kenntnisse finden Sie in der Spalte Java Basic Tutorial.

Das obige ist der detaillierte Inhalt vonLösung für verstümmelte Zeichen beim Lesen von TXT-Dateien in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage