Encodage python
Accueil › Python avancé › Encodage python
Différences python 2 / 3
Pip installe vos librairies
Encodage la bête noire des développeurs
Un jour ou l'autre vous tomberez sur une erreur d'encodage et vous y passerez des heures pour comprendre d'où vient le
problème
Exemple de problème d' encodage :
UnicodeEncodeError: 'ascii' codec can't encode character '\xe0' in position 49059: ordinal not in range(128)
Les problèmes d' encoding viennent du fait que l'informatique a plus ou moins été crée par des anglophones (ça commence par
Alan Turing ) et que dans cette langue il n'y pas d'accents alors que la langue française en regorge à foison! Et d'ailleurs d'autres
langues comme l'espagnol intègre des accents que nous ne possédons pas. Les encodages utilisés par nos amis anglophones ne
sont donc pas compatibles avec les notres et cela créer des erreurs.
UTF-8 la solution miracle
UTF-8 est un encodage universel qui a pour objectif de rénuir les caractères utilisés par toutes les langues. Il n'y a donc en
théorie plus de problèmes de communication si tous les programmes sont encodés avec de l' UTF8 . Idéalement il faudrait que
tout le monde intègre l'UTF8 par défaut, change l'ancien encodage par de l'UTF8 et non l'inverse.
Par défaut dans python 2.7 l'encoding est ASCII , il est donc nécessaire d'indiquer l'encodage UTF8 à chaque fois
Comment intégrer cet encodage dans nos programmes?
Pour cela il vous faudra indiquer dans l'entête l' encodage UTF-8 les lignes suivantes:
# -*- coding: utf-8 -*-
Il existe cette autre syntaxe pour indiquer un encodage :
# coding: utf-8
A noter que par défaut l'encoding est en utf-8 pour python 3.
L'encoding de votre fichier
Alors évidemment il faut de l'UTF8 partout et tout le temps: y compris dans l'encodage de votre fichier lors de son
enregistrement. En effet il est essentiel d'indiquer l'encodage dans l'entête de votre fichier mais il est encore plus import
d'enregistrer votre fichier en UTF8. Et cette action c'est votre éditeur de texte qui s'en charge.
Par exemple avec notre éditeur préféré - sublime text - vous pouvez choisir l'encodage dans File > Save with encoding .
Evidemment par défaut les fichiers sont enregistrés en UTF8 mais assurez-vous que c'est bien le cas en cas de bug.
String et Unicode (python 2 uniquement)
Il existe deux types de chaînes de caractères en python: les types string et les types unicode .
name = 'engel' # str
name = 'engel' # unicode
Il vous faudra toujours utiliser le version unicode.
La bonne nouvelle c'est que dans python 3 cette syntaxe va disparaitre vu que par défaut tout sera en unicode. Il est même
possible d'intégrer cette fonctionnalité dans python 2.7 en important le module suivant:
from __future__ import unicode_literals
Unidecode python 2 uniquement)
Parfois il n'y a pas de solution autre que de supprimer purement et simplement les accents. Vous pouvez utiliser le module
unidecode :
pip install unidecode
Et dans votre fichier:
from unidecode import unidecode
print unidecode("éllèç")
Résultat:
ellec
Différences python 2 / 3
Pip installe vos librairies
Python débutant
Présentation Python
Installer Python
Interpréteur python
IDE Editeurs python
Calculs et variables
Les listes
Les tuples
Les dictionnaires
Les fonctions
Les fonctions natives
Conditions if elif else
Boucle for / while
Les modules/packages
Les exceptions
Les compréhensions de liste
Programmation orientée objet
Les décorateurs
Les itérateurs/générateurs
Expressions régulières
Lire / Editer un fichier
PEP 8 / bonnes pratiques
Black formateur de code
Python avancé
Différences python 2 / 3
Encodage python
Pip installe vos librairies
Virtualenv
Debug
Python Path
Gestion fichiers et dossiers
Interface graphique tKinter
Graphiques scientifiques
Programmation asynchrone
XML et python
BeautifulSoup / HTML parser
Créer un exécutable
Dossier partagé / samba
FTP / SFTP
Fabric SSH
Envoyer un mail SMTP
Réseau / socket
Base de données
Créer un serveur web
Websocket & Crossbar
Générateur de site statique
Numba
Tests unitaires
Deep Learning IA
Deep Learning & PyTorch
Block Chain
Django
Présentation Django
Installer Django
Initialiser un projet Django
Créer une application Django
ORM Django
Login Django
Les champs des modèles
Interface admin Django
Queryset
Many to many relation
Les vues
Les formulaires
CSRF Token
Les middlewares
Templates Django
Context Processor
Signaux Django
Xadmin
Django select2
Crispy Forms
AngularJS et Django
Uploader un fichier en ajax
Django Rest Framework
Django déploiement
Raspberry Pi
Présentation Raspberry pi
Installer Raspbian
IP statique
Samba / partager un dossier
Lire vidéo 1080p
Installer VPN
Client torrent
Site
Contacter l'auteur
Mentions légales
Apprendre programmation cours python 3
Django internet web - Documentation débutant et expert
Version anglaise