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.
Détecter l'encodage
[modifier | modifier le wikicode]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 | modifier le wikicode]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 | modifier le wikicode]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 | modifier le wikicode]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 | modifier le wikicode]Voir aussi
[modifier | modifier le wikicode]- iconv sur la documentation francophone de la distribution Ubuntu
- tutoriel encodage des caractères sur la documentation francophone de la distribution Ubuntu