Lesen und Schreiben von Unicode in Dateien
In diesem Schritt werden wir lernen, wie man Unicode-Zeichen in Dateien schreibt und aus Dateien liest. Die korrekte Behandlung von Zeichenkodierungen ist bei der Arbeit mit Dateien von entscheidender Bedeutung, insbesondere wenn es um internationale Texte geht.
Grundlagen von Zeichenkodierungen
Wenn Sie Text in eine Datei schreiben oder aus einer Datei lesen, müssen Sie die Zeichenkodierung angeben. Die am häufigsten verwendete und empfohlene Kodierung für Unicode-Text ist UTF-8.
- UTF-8 ist eine variablen Breite kodierende Methode, die alle Unicode-Zeichen darstellen kann.
- Sie ist rückwärtskompatibel mit ASCII.
- Sie ist die Standardkodierung für HTML, XML und viele moderne Systeme.
Java bietet die java.nio.charset.StandardCharsets-Klasse, die Konstanten für Standard-Zeichensätze wie UTF-8, UTF-16 und ISO-8859-1 enthält.
Lassen Sie uns ein Programm erstellen, das das Lesen und Schreiben von Unicode-Text in Dateien demonstriert.
Erstellen des Unicode-Dateischreibers
-
Erstellen Sie eine neue Datei mit dem Namen UnicodeFileDemo.java im Verzeichnis /home/labex/project.
-
Fügen Sie den folgenden Code in die Datei ein:
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.util.*;
public class UnicodeFileDemo {
private static final String FILE_PATH = "unicode_sample.txt";
public static void main(String[] args) {
try {
// Create a list of greetings in different languages
List<String> greetings = Arrays.asList(
"English: Hello, World!",
"Spanish: ¡Hola, Mundo!",
"French: Bonjour, le Monde!",
"German: Hallo, Welt!",
"Chinese: 你好,世界!",
"Japanese: こんにちは、世界!",
"Arabic: مرحبا بالعالم!",
"Russian: Привет, мир!",
"Greek: Γειά σου, Κόσμε!",
"Hindi: नमस्ते, दुनिया!",
"Emoji: 👋🌍!"
);
// Write greetings to file
writeToFile(greetings);
System.out.println("Successfully wrote Unicode text to " + FILE_PATH);
// Read and display file contents
List<String> readLines = readFromFile();
System.out.println("\nFile contents:");
for (String line : readLines) {
System.out.println(line);
}
// Display encoding information
System.out.println("\nEncoding information:");
System.out.println("Default charset: " + System.getProperty("file.encoding"));
System.out.println("Is UTF-8 supported? " + StandardCharsets.UTF_8.canEncode());
} catch (IOException e) {
System.err.println("Error processing the file: " + e.getMessage());
e.printStackTrace();
}
}
private static void writeToFile(List<String> lines) throws IOException {
// Write using Files class with UTF-8 encoding
Files.write(Paths.get(FILE_PATH), lines, StandardCharsets.UTF_8);
}
private static List<String> readFromFile() throws IOException {
// Read using Files class with UTF-8 encoding
return Files.readAllLines(Paths.get(FILE_PATH), StandardCharsets.UTF_8);
}
}
-
Speichern Sie die Datei, indem Sie Strg+S drücken oder im Menü "Datei > Speichern" auswählen.
-
Kompilieren und führen Sie das Programm aus, indem Sie die folgenden Befehle im Terminal ausführen:
javac UnicodeFileDemo.java
java UnicodeFileDemo
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
Successfully wrote Unicode text to unicode_sample.txt
File contents:
English: Hello, World!
Spanish: ¡Hola, Mundo!
French: Bonjour, le Monde!
German: Hallo, Welt!
Chinese: 你好,世界!
Japanese: こんにちは、世界!
Arabic: مرحبا بالعالم!
Russian: Привет, мир!
Greek: Γειά σου, Κόσμε!
Hindi: नमस्ते, दुनिया!
Emoji: 👋🌍!
Encoding information:
Default charset: UTF-8
Is UTF-8 supported? true
Untersuchung der Ausgabedatei
Schauen wir uns die Datei an, die wir erstellt haben:
-
Verwenden Sie den Dateiexplorer der WebIDE, um die Datei unicode_sample.txt zu öffnen, die im Verzeichnis /home/labex/project erstellt wurde.
-
Sie sollten alle Begrüßungen in verschiedenen Sprachen sehen, die mit ihren Unicode-Zeichen korrekt angezeigt werden.
Code-Verständnis
Dieses Programm demonstriert mehrere Schlüsselpunkte bei der Arbeit mit Unicode in Dateien:
-
Explizite Kodierungsangabe: Wir geben explizit die UTF-8-Kodierung an, wenn wir in die Datei schreiben und aus der Datei lesen, indem wir StandardCharsets.UTF_8 verwenden. Dies stellt sicher, dass die Unicode-Zeichen korrekt beibehalten werden.
-
Moderne Datei-E/A: Wir verwenden die java.nio.file.Files-Klasse, die bequeme Methoden zum Lesen und Schreiben von Dateien mit bestimmten Zeichenkodierungen bietet.
-
Standardkodierung: Das Programm zeigt die Standard-Zeichenkodierung des Systems an, die je nach Betriebssystem und Gebietsschemasettings variieren kann.
-
Emoji-Unterstützung: Das Programm enthält ein Emoji-Beispiel (👋🌍), um zu zeigen, dass Java und UTF-8 Zeichen aus den zusätzlichen Ebenen von Unicode verarbeiten können.
Beim Arbeiten mit Unicode in Dateien sollten Sie immer daran denken:
- Die Kodierung explizit anzugeben (vorzugsweise UTF-8)
- Die gleiche Kodierung für das Lesen und Schreiben zu verwenden
- Potenzielle
IOExceptions zu behandeln, die während der Dateivorgänge auftreten können
- Die Standardkodierung des Systems zu kennen, aber sich nicht darauf zu verlassen