Recherche de site Web

Comment convertir des fichiers en codage UTF-8 sous Linux


Dans ce guide, nous décrirons ce qu'est l'encodage de caractères et couvrirons quelques exemples de conversion de fichiers d'un encodage de caractères à un autre à l'aide d'un outil de ligne de commande. Enfin, nous verrons comment convertir plusieurs fichiers de n'importe quel jeu de caractères (charset) en codage UTF-8 sous Linux.

Comme vous l’avez probablement déjà en tête, un ordinateur ne comprend ni ne stocke les lettres, les chiffres ou tout ce que nous, en tant qu’humains, pouvons percevoir, à l’exception des bits. Un bit n'a que deux valeurs possibles, soit un 0 ou un 1, true ou false, oui ou non. Tout le reste, comme les lettres, les chiffres, les images, doit être représenté en bits pour qu'un ordinateur puisse le traiter.

En termes simples, le codage de caractères est un moyen d'informer un ordinateur sur la manière d'interpréter les zéros et les uns bruts en caractères réels, où un caractère est représenté par un ensemble de nombres. Lorsque nous tapons du texte dans un fichier, les mots et les phrases que nous formons sont composés de différents caractères, et les caractères sont organisés dans un jeu de caractères.

Il existe différents systèmes de codage tels que ASCII, ANSI, Unicode, entre autres. Vous trouverez ci-dessous un exemple de codage ASCII.

Character  bits
A               01000001
B               01000010

Sous Linux, l'outil de ligne de commande iconv est utilisé pour convertir le texte d'une forme d'encodage à une autre.

Vous pouvez vérifier l'encodage d'un fichier à l'aide de la commande file, en utilisant l'indicateur -i ou --mime qui permet l'impression de type MIME. chaîne comme dans les exemples ci-dessous :

file -i Car.java
file -i CarDriver.java

La syntaxe d'utilisation de iconv est la suivante :

iconv option
iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile 

-f ou --from-code signifie le codage d'entrée et -t ou --to-encoding spécifie codage de sortie.

Pour répertorier tous les jeux de caractères codés connus, exécutez la commande ci-dessous :

iconv -l 

Convertir des fichiers de l'encodage UTF-8 en ASCII

Ensuite, nous apprendrons comment convertir d’un schéma de codage à un autre. La commande ci-dessous convertit l'encodage ISO-8859-1 en UTF-8.

Considérons un fichier nommé input.file qui contient les caractères :


� � � �

Commençons par vérifier l'encodage des caractères dans le fichier, puis visualisons le contenu du fichier. De plus, nous pouvons convertir tous les caractères en codage ASCII.

Après avoir exécuté la commande iconv, nous vérifions ensuite le contenu du fichier de sortie et le nouvel encodage des caractères comme ci-dessous.

file -i input.file
cat input.file 
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file
cat out.file 
file -i out.file 

Remarque : Si la chaîne //IGNORE est ajoutée au codage, les caractères qui ne peuvent pas être convertis et une erreur s'affichent après conversion.

Encore une fois, en supposant que la chaîne //TRANSLIT soit ajoutée au codage comme dans l'exemple ci-dessus (ASCII//TRANSLIT), les caractères en cours de conversion sont translittérés si nécessaire et si possible . Ce qui implique que dans le cas où un personnage ne peut pas être représenté dans le jeu de caractères cible, il peut être approximé par un ou plusieurs caractères similaires.

Par conséquent, tout caractère qui ne peut pas être translittéré et qui n'est pas dans le jeu de caractères cible est remplacé par un point d'interrogation (?) dans la sortie.

Convertir plusieurs fichiers en codage UTF-8

Pour revenir à notre sujet principal, pour convertir plusieurs ou tous les fichiers d'un répertoire en codage UTF-8, vous pouvez écrire un petit script shell appelé encoding.sh comme suit :

#!/bin/bash
#enter input encoding here
FROM_ENCODING="value_here"
#output encoding(UTF-8)
TO_ENCODING="UTF-8"
#convert
CONVERT=" iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING"
#loop to convert multiple files 
for  file  in  *.txt; do
     $CONVERT   "$file"   -o  "${file%.txt}.utf8.converted"
done
exit 0

Enregistrez le fichier, puis rendez le script exécutable. Exécutez-le depuis le répertoire où se trouvent vos fichiers (*.txt).

chmod  +x  encoding.sh
./encoding.sh

Important : Vous pouvez également utiliser ce script pour la conversion générale de plusieurs fichiers d'un encodage donné à un autre, jouez simplement avec les valeurs du FROM_ENCODING et la variable TO_ENCODING, sans oublier le nom du fichier de sortie "$ {file%.txt}.utf8.converted".

Pour plus d’informations, consultez la page de manuel iconv.

man iconv

Pour résumer ce guide, comprendre l'encodage et comment convertir d'un système d'encodage de caractères à un autre est une connaissance nécessaire pour chaque utilisateur d'ordinateur, et encore plus pour les programmeurs lorsqu'il s'agit de traiter du texte.

Enfin, vous pouvez nous contacter en utilisant la section commentaires ci-dessous pour toute question ou commentaire.