Programmer en R/Résoudre les problèmes d'encodage des caractères

L'import de fichiers CSV et des fichiers texte en général peut poser des problèmes d'encodage de caractères. Dans cette section, nous passons en revue des méthodes pour détecter l'encodage d'un fichier et convertir le fichier avant de l'importer dans R. Ces méthodes fonctionnent sous Mac OS X et Linux.

Wikipédia propose un article sur : « Codage des caractères ».

Détecter l'encodage modifier

Dans cette section, nous prenons pour exemple la liste des départements 2016 publiées par l'Insee[1].

Détecter l'encodage avec la commande file modifier

Pour les utilisateurs de Mac OS X et Linux, nous recommandons d'ouvrir une fenêtre d'un Terminal, d'aller dans le dossier correspondant (avec la commande cd) et d'utiliser la commande file -i

$ cd ~/Documents/monprojet/data/
$ file -i depts2016.txt 
depts2016.txt: regular file

Dans certains cas, cette commande permet de connaître l'encodage des caractères. Dans ce cas précis, nous n'avons pas d'information sur l'encodage des caractères dans ce fichier. Nous allons utiliser la commande chardetect.

Détecter l'encodage avec la commande chardetect modifier

Pour installer chardetect, il suffit d'utiliser la commande pip install dans un terminal :

$ pip install chardet

Pour détecter l'encodage, on tape simplement chardetect suivi du nom du fichier :

$ chardetect depts2016.txt 
depts2016.txt: windows-1252 with confidence 0.73

La commande nous indique que le fichier depts2016.txt est probablement encodé en windows-1252.

Convertir l'encodage d'un fichier modifier

Pour convertir le fichier en encodage utf-8 (l'encodage couramment utilisé sur Linux et Mac OS X), on utilise la commande iconv. iconv trois paramètres : l'encodage d'origine (-f pour from), l'encodage de destination (-t pour to) et le nom du fichier :

$ iconv -f windows-1252 -t utf-8 depts2016.txt
REGION	DEP	CHEFLIEU	TNCC	NCC	NCCENR
84	01	01053	5	AIN	Ain
32	02	02408	5	AISNE	Aisne
84	03	03190	5	ALLIER	Allier
93	04	04070	4	ALPES-DE-HAUTE-PROVENCE	Alpes-de-Haute-Provence
93	05	05061	4	HAUTES-ALPES	Hautes-Alpes
93	06	06088	4	ALPES-MARITIMES	Alpes-Maritimes
84	07	07186	5	ARDECHE	Ardèche

On voit que cette fois-ci, les accents sont correctement affichés.

Pour enregistrer le résultat, on peut imprimer le résultat de cette commande dans un nouveau fichier texte en indiquant tout simplement le nom du fichier de destination après un chevron > :

$ iconv -f windows-1252 -t utf-8 depts2016.txt > depts2016_utf8.txt

Notes et références modifier

Voir aussi modifier