Lecture et écriture de caractères Unicode dans des fichiers
Dans cette étape, nous allons apprendre à lire et écrire des caractères Unicode dans des fichiers. Une gestion appropriée des encodages de caractères est cruciale lorsque vous travaillez avec des fichiers, en particulier lorsqu'il s'agit de texte international.
Comprendre les encodages de caractères
Lorsque vous écrivez du texte dans un fichier ou que vous le lisez depuis un fichier, vous devez spécifier l'encodage de caractères. L'encodage le plus courant et recommandé pour le texte Unicode est UTF - 8.
- UTF - 8 est un encodage à largeur variable qui peut représenter tous les caractères Unicode.
- Il est rétro - compatible avec ASCII.
- C'est l'encodage par défaut pour HTML, XML et de nombreux systèmes modernes.
Java fournit la classe java.nio.charset.StandardCharsets
, qui contient des constantes pour les jeux de caractères standards tels que UTF - 8, UTF - 16 et ISO - 8859 - 1.
Créons un programme qui démontre la lecture et l'écriture de texte Unicode dans des fichiers.
Création du programme d'écriture de fichier Unicode
-
Créez un nouveau fichier nommé UnicodeFileDemo.java
dans le répertoire /home/labex/project
.
-
Ajoutez le code suivant au fichier :
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);
}
}
-
Enregistrez le fichier en appuyant sur Ctrl + S
ou en sélectionnant Fichier > Enregistrer dans le menu.
-
Compilez et exécutez le programme en exécutant les commandes suivantes dans le terminal :
javac UnicodeFileDemo.java
java UnicodeFileDemo
Vous devriez voir une sortie similaire à ce qui suit :
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
Examiner le fichier de sortie
Jetons un coup d'œil au fichier que nous avons créé :
-
Utilisez l'explorateur de fichiers du WebIDE pour ouvrir le fichier unicode_sample.txt
créé dans le répertoire /home/labex/project
.
-
Vous devriez voir toutes les salutations dans différentes langues, correctement affichées avec leurs caractères Unicode.
Comprendre le code
Ce programme démontre plusieurs points clés concernant le travail avec Unicode dans les fichiers :
-
Spécification explicite de l'encodage : Nous spécifions explicitement l'encodage UTF - 8 lors de l'écriture et de la lecture du fichier en utilisant StandardCharsets.UTF_8
. Cela garantit que les caractères Unicode sont correctement préservés.
-
E/S de fichiers modernes : Nous utilisons la classe java.nio.file.Files
, qui fournit des méthodes pratiques pour lire et écrire des fichiers avec des encodages de caractères spécifiques.
-
Encodage par défaut : Le programme affiche l'encodage de caractères par défaut du système, qui peut varier en fonction du système d'exploitation et des paramètres régionaux.
-
Prise en charge des emojis : Le programme inclut un exemple d'emoji (👋🌍) pour démontrer que Java et UTF - 8 peuvent gérer les caractères des plans supplémentaires d'Unicode.
Lorsque vous travaillez avec Unicode dans des fichiers, n'oubliez jamais de :
- Spécifier explicitement l'encodage (de préférence UTF - 8).
- Utiliser le même encodage pour la lecture et l'écriture.
- Gérer les éventuelles
IOException
qui peuvent se produire lors des opérations sur les fichiers.
- Être conscient de l'encodage par défaut du système, mais ne pas vous y fier.