Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Python > Apprenons Python ! > Annexes > Encodons nos codes > Lecture du tutoriel

Encodons nos codes

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Auteurs : Communauté Pythonienne, iPoulet et Pmol
Visualisations : 20 797

Plus d'informations Plus d'informations
Code : Python
1
2
3
print "Zér0s, Zér0ttes, bonsoir."
print "Nous voilà confontés à un grave problème, je ne peux pas partir en vacances"
print "Je vous invite donc à adresser vos dons à..."

Testez donc ce code...
Code : Console
sys:1: DeprecationWarning: Non-ASCII character ' ' in file /Users/paul/Desktop/Sans titre.py on line 1, but no encoding declared; see <lien url="http://www.python.org/peps/pep-0263.html">http://www.python.org/peps/pep-0263.html</lien> for details

Zér0s, Zér0ttes, bonsoir.

Nous voilà confontés à un grave problème, je ne peux pas partir en vacances

Je vous invite donc à adresser vos dons à...


Quelle est donc ce message d'erreur qui vient saboter allègrement notre programme ? o_O

Nous allons voir ça immédiatement. ;)
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Encodage ?

Décortiquons ensemble le message d'erreur obtenu :
Code : Console
sys:1: DeprecationWarning: Non-ASCII character '\xc3' in file /Users/paul/Desktop/Sans titre.py on line 1, but no encoding declared; see <lien url="http://www.python.org/peps/pep-0263.html">http://www.python.org/peps/pep-0263.html</lien> for details

Zér0s, Zér0ttes, bonsoir.

Nous voilà confontés à un grave problème, je ne peux pas partir en vacances

Je vous invite donc à adresse vos dons à...

Pour peu que vous parliez quelques mots d'anglais, vous avez reconnu qu'il y a un caractère non-ASCII dans notre programme alors qu'aucun encodage n'est déclaré.

Il faut en effet savoir que, par défaut dans tous vos programmes, chaque caractère est encodé. C'est-à-dire que chaque caractère est représenté en mémoire sous forme de nombres, vu qu'un ordinateur ne gère que des nombres.
En Python, c'est l'encodage ASCII qui a été choisi. ;)
Par exemple, la lettre majuscule "A" sera remplacée par le chiffre 65. La lettre minucule "z" , par le chiffre 122 (pour plus d'informations).

Or dans encodage, à la base américain, les accents ou bien les c cédilles ne sont pas présents.

C'est pour cela que Python plante : "Beuh, ce caractère n'est pas dans la table ASCII, plantons !". :)
Il faut donc indiquer à Python que l'on veut changer d'encodage pour en prendre un qui accepte les caractères spéciaux.

Choisissons notre encodage

Il est donc temps, si vous voulez faire marcher ce petit programme, de choisir un encodage.
Lequel choisir ? Nous allons vous présenter ici quelques encodages utilisés en Python. A priori, vous n'avez pas besoin d'en utiliser d'autres.

Il ne faut pas choisir un encodage au hasard ! Il faut déclarer celui dans lequel votre code est enregistré. Dans votre éditeur préféré, vous enregistrez vore code dans tel ou tel encodage (on doit pouvoir le changer dans les préférences). C'est celui-là qu'il faut déclarer. ;)


L'encodage ASCII



C'est celui utilisé par défaut par Python. Il ne gère pas les accents ni les caractères spéciaux.
Pour l'utiliser, nul besoin de dire quelque chose à Python, il s'en sert d'office. :)
Si vous voulez quand même le préciser, marquez :
Code : Python
1
# -*- coding: ascii -*-

A la première ou deuxième ligne de votre programme.
Plus d'informations.

L'UTF-8



Il gère les accents, les caractères spéciaux :
Code : Python
1
print "Ùô??î?Ú??Âæ|?@éàèç!"

Marchera :)
Pour l'utiliser, il faut mettre à la première ou deuxième ligne de votre programme ce faux commentaire :
Code : Python
1
# -*- coding: utf-8 -*-


Le coding Latin-1



Ausi appellé par les intimes ISO/CEI 8859-1 (mais Latin-1 c'est plus joli :p ).
Citons Wikipédia :
Citation : Wikipédia
L'ISO 8859-1 recouvre les caractères utilisés par les langues européennes suivantes : albanais, allemand, anglais, basque, catalan, danois, gaélique écossais, espagnol, féringien, finnois, français (sauf caractères ?, ? et ? qui n'ont pas été inclus car l'employeur de l'un des rédacteurs de la norme, un grand fabricant d'imprimantes, n'avait pas inclus ces caractères dans ses imprimantes), islandais (sauf caractères ? et ?), gaélique irlandais, italien, néerlandais, norvégien, portugais, romanche et suédois. L'afrikaans et le swahili sont également couverts.

Vous pouvez donc utiliser beacoup de caractères, y compris les caractères exotiques, irlandais, etc...
Pour l'utiliser, indiquer ce code à la première ou deuxième ligne de votre programme :
Code : Python
1
# -*- coding: latin-1 -*


Sous Windows, on peut trouver des problèmes d'incompatibilité entre l'encodage de la ligne de commande MS-DOS et le reste. Ainsi, les accents seraient mal affichés ! Deux solutions :
  • Vous éditez votre code directement avec la commande edit, depuis le DOS :p
  • Vous cherchez les codes des caractères accentués, et vous les affichez de la sorte :


Code : Python
1
print "Je suis une cha\x8Cne"


La notation \xXX signifie "le caractère dont le code hexadecimal est XX". Ici, 8C correspond au caractère î.

C'est beaucoup d'effort pour peu de choses, à vous de voir... nous n'aurons pas ces problèmes avec des interfaces graphiques ;)

Voilà, vous savez maintenant comment utiliser ces fameux accents qui vous manquaient tant. :)
Notons quand même qu'il est préférable de ne pas utiliser les accents, ils peuvent gêner la lecture de votre code par nos amis anglophones.
Petite précision : Lorsque vous êtes en ligne de commande, utilisez la méthode que vous venez d'apprendre. Quand vous travailler avec des scripts, il vous suffit de marquer :
Code : Python
1
# coding: votre_encodage

A la première ou deuxième ligne de votre programme. Python reconnait le mot coding et utilise l'encodage donné :
Code : Python
1
2
#Programme numéro 2729, encoding: utf-8
print "Je sais encoder ! Ó|ËÍÎ"
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 02/07/2006 à 19:20:11
Modifié : le 22/08/2008 à 15:53:37
Avancement : 65%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 245 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.0397s (0.0276s)