Heim > Java > JavaBase > Hauptteil

Java implementiert das Abrufen der Zeichenkodierung einer Textdatei

王林
Freigeben: 2019-12-23 11:49:49
nach vorne
12141 Leute haben es durchsucht

Java implementiert das Abrufen der Zeichenkodierung einer Textdatei

1. Zeichenkodierung verstehen:

1. Die Standardkodierung von String in Java ist UTF-8, die mit der folgenden Anweisung abgerufen werden kann: Charset.defaultCharset();

2. Unter dem Windows-Betriebssystem ist die Standardkodierung von Textdateien ANSI, was GBK für chinesisches Windows ist. Wenn wir beispielsweise das Notepad-Programm verwenden, um ein neues Textdokument zu erstellen, ist die Standardzeichenkodierung ANSI.

3. Textdokumente haben vier Kodierungsoptionen: ANSI, Unicode (einschließlich Unicode Big Endian und Unicode Little Endian), UTF-8, UTF-16

4 Manchmal ist das Codierungsformat möglicherweise nicht bekannt. Daher müssen Sie ein Programm verwenden, um die Codierung der TXT-Datei dynamisch zu bestimmen.

ANSI: Keine Formatdefinition, für chinesische Betriebssysteme ist es GBK oder GB2312

UTF-8: Die ersten drei Bytes sind: 0xE59B9E (UTF-8), 0xEFBBBF (UTF-8 enthalten). BOM)

UTF-16: Die ersten beiden Bytes sind: 0xFEFF

Unicode: Die ersten beiden Bytes sind: 0xFFFE

Zum Beispiel: Unicode-Dokumente beginnen mit 0xFFFE, verwenden Sie Das Programm entnimmt lediglich die ersten paar Bytes und trifft ein Urteil.

5. Entsprechung zwischen Java-Kodierung und Textkodierung:

Java implementiert das Abrufen der Zeichenkodierung einer Textdatei

Wenn das Kodierungsformat nicht übereinstimmt, werden verstümmelte Zeichen angezeigt. Daher müssen Sie beim Lesen von Textdateien die richtige Zeichenkodierung einstellen. Das Codierungsformat von Textdokumenten wird in den Dateiheader geschrieben. Nachdem Sie das Codierungsformat erhalten haben, werden durch das Lesen der Datei verstümmelte Zeichen vermieden.

Empfohlene kostenlose Online-Video-Tutorials: Java-Lernen

2. Zum Beispiel:

hat eine Textdatei: test.txt

Java implementiert das Abrufen der Zeichenkodierung einer Textdatei

Testcode:

/**
 * 文件名:CharsetCodeTest.java
 * 功能描述:文件字符编码测试
 */
 
import java.io.*;
 
public class CharsetCodeTest {
    public static void main(String[] args) throws Exception {
        String filePath = "test.txt";
        String content = readTxt(filePath);
        System.out.println(content);
    }
 
 
public static String readTxt(String path) {
        StringBuilder content = new StringBuilder("");
        try {
            String fileCharsetName = getFileCharsetName(path);
            System.out.println("文件的编码格式为:"+fileCharsetName);
 
            InputStream is = new FileInputStream(path);
            InputStreamReader isr = new InputStreamReader(is, fileCharsetName);
            BufferedReader br = new BufferedReader(isr);
 
            String str = "";
            boolean isFirst = true;
            while (null != (str = br.readLine())) {
                if (!isFirst)
                    content.append(System.lineSeparator());
                    //System.getProperty("line.separator");
                else
                    isFirst = false;
                content.append(str);
            }
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("读取文件:" + path + "失败!");
        }
        return content.toString();
    }
 
 
    public static String getFileCharsetName(String fileName) throws IOException {
        InputStream inputStream = new FileInputStream(fileName);
        byte[] head = new byte[3];
        inputStream.read(head);
 
        String charsetName = "GBK";//或GB2312,即ANSI
        if (head[0] == -1 && head[1] == -2 ) //0xFFFE
            charsetName = "UTF-16";
        else if (head[0] == -2 && head[1] == -1 ) //0xFEFF
            charsetName = "Unicode";//包含两种编码格式:UCS2-Big-Endian和UCS2-Little-Endian
        else if(head[0]==-27 && head[1]==-101 && head[2] ==-98)
            charsetName = "UTF-8"; //UTF-8(不含BOM)
        else if(head[0]==-17 && head[1]==-69 && head[2] ==-65)
            charsetName = "UTF-8"; //UTF-8-BOM
 
        inputStream.close();
 
        //System.out.println(code);
        return charsetName;
    }
}
Nach dem Login kopieren

Laufendes Ergebnis:

Java implementiert das Abrufen der Zeichenkodierung einer Textdatei

Empfohlene verwandte Artikel und Tutorials: Erste Schritte mit Java

Das obige ist der detaillierte Inhalt vonJava implementiert das Abrufen der Zeichenkodierung einer Textdatei. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
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