dernière modification : 2023

Environnement de travail

Bien configurer son poste de travail est un pré-requis indispensable pour éviter d’avoir à se battre contre les problèmes d’encodage.

Tout environnement numérique (application, environnement graphique, système de fichiers) est configuré pour utiliser un jeu de caractères et un encodage par défaut. Parfois, il est possible de le personnaliser, parfois pas. Mais dans tous les cas, il faut le connaitre.

Par exemple, éditer un fichier avec un simple éditeur de texte met en jeu plusieurs environnements : l’environnement de stockage du fichier source, celui du fichier destination (qui peut être différent du précédent, si l’on change de support) et l’environnement de travail de l’éditeur (qui nous importe peu). Les points de vigilance se situent aux endroits où le texte change d’environnement. Si l’éditeur de texte offre la possibilité de choisir l’encodage à utiliser à la lecture et à l’écriture, alors les problèmes sont évitables. Sinon, il faut savoir que l’application utilise un encodage implicite à chaque lecture et écriture, et gare si cela ne correspond pas à la réalité.

Autre exemple, le shell Unix, application de base par excellence, utilise lui aussi un encodage implicite que l’on peut consulter et modifier avec la commande locale.

Enfin, chaque système de fichiers (disque, clé USB) utilise un encodage donné pour nommer les fichiers et répertoires.

1. Les implicites de l’interpréteur Python

Ces valeurs implicites dépendent de la version de Python et du système hôte. Pour déterminer l’encodage implicite des données lues par un programme python :

import sys
print(sys.stdin.encoding)

Pour déterminer l’encodage implicite des données écrites par un programme python :

import sys
print(sys.stdout.encoding)

Pour déterminer l’encodage du système de fichier (important pour comprendre ce qu’il advient des caractères nationaux contenus dans les noms de fichiers) :

import sys
print(sys.getfilesystemencoding())

2. Encodage du code Python

Un programme Python est un fichier texte, les caractères qui le composent sont donc eux aussi encodés. L’interpréteur Python doit connaitre cet encodage.

Pour éviter les surprises, le programmeur doit donc configurer correctement son éditeur, mais aussi indiquer à l’interpréteur Python l’encodage du code source. Cela se fait en tout début de programme via une ligne commençant par "# coding:".