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:
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
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; } }
Laufendes Ergebnis:
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!