17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

56<br />

Éléments du langage<br />

DEUXIÈME PARTIE<br />

Le support d’Unicode a été introduit dans Python 2.4, et peut être utilisé avec des<br />

chaînes préfixées du caractère u comme vu précédemment, qui deviennent des objets<br />

de type unicode.<br />

Chaînes unicode<br />

>>> unicode = u"Je suis en unicode."<br />

>>> unicode.encode('utf8')<br />

'Je suis en unicode.'<br />

>>> 'je vais être en unicode'.decode()<br />

Traceback (most recent call last):<br />

File "", line 1, in <br />

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 8:<br />

ordinal not in range(128)<br />

>>> 'je vais être en unicode'.decode('utf8')<br />

u'je vais \xeatre en unicode'<br />

Des méthodes d’encodage et de décodage permettent de passer du type str au type<br />

unicode, en utilisant une table de correspondance, appelée codec et portant un nom<br />

unique (utf8 est utilisé dans l’exemple).<br />

Mais cette situation n’est qu’une transition vers un environnement où l’Unicode<br />

devient le type par défaut pour la gestion des chaînes de caractères.<br />

Évolution de l’Unicode de Python 2 à Python 3<br />

Python 3 adopte le standard Unicode de base, et le préfixe u disparaît. Python 2.6,<br />

quant à lui, ajoute un nouveau type bytes, qui est un synonyme du type str. Le préfixe<br />

b peut être utilisé pour ce type.<br />

Le préfixe b<br />

>>> b'je suis un bytes'<br />

'je suis un bytes'<br />

L’intérêt de ce synonyme est de permettre aux développeurs d’utiliser dans leurs programmes<br />

Python 2.6 un marqueur simple pour différencier les chaînes qui ne sont<br />

pas utilisées dans le programme pour stocker du contenu textuel d’une langue<br />

donnée. Ce contenu textuel est de préférence stocké dans des chaînes unicode.<br />

Donnée vs contenu textuel<br />

>>> b'data1234'<br />

'data1234'<br />

>>> u'je suis une phrase moi, pas de la donnée !'<br />

u'je suis une phrase moi, pas de la donn\xe9e !'

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!