Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Classe « str » Python 3.11.3

Méthode builtins.str.encode

Signature de la méthode encode

 def encode(self, encoding="utf-8", errors="strict") -> bytes

Description

Permet de réencoder la chaîne courante de UFT-16 (utilisé en interne par Python) vers l'encodage spécifié (par défaut UTF-8). Le premier paramètre correspond à l'encodage de destination alors que le second correspond à la stratégie de gestion d'erreur en cas de problème de conversion. La chaîne produite sera stockée dans un tableau d'octets (typé bytes).

>>> s = "A message".encode("utf-8")
>>> type(s)
<class 'bytes'>
>>> s
b'A message'
>>>

Il existe un très grand nombre d'encodages supportés par cette méthode et notamment : ascii, les tables iso-8859 (et notamment iso-8859-1), utf-8, utf-16 (little et big endian), utf-32 (little et big endian)...

help(str.encode)

Encode the string using the codec registered for encoding.

  encoding
    The encoding in which to encode the string.
  errors
    The error handling scheme to use for encoding errors.
    The default is 'strict' meaning that encoding errors raise a
    UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
    'xmlcharrefreplace' as well as any other name registered with
    codecs.register_error that can handle UnicodeEncodeErrors.

Paramètres

ParamètreDescription
 self : str 
La chaîne de caractères courante. Rappel : self est implicitement passée lors de l'appel de la méthode.
 encoding : str = 'utf-8' 
L'encodage de destination souhaité.
 errors : str = 'strict' 
Le mode de gestion d'erreur souhaité. Il peut valoir :
  • backslashreplace : remplace les caractères ne pouvant pas être encodés par des séquences du type \\x??
  • ignore : continue sans signaler l'erreur.
  • namereplace : remplace les caractères ne pouvant pas être encodés par des séquences du type \\N{CHAR_NAME}.
  • replace : remplace les caractères ne pouvant pas être encodés par ?.
  • strict : génère une exception de type UnicodeError en cas d'erreur d'encodage.
  • xmlcharrefreplace : remplace les caractères ne pouvant pas être encodés avec l'entité XML équivalente (&#xx;).

Valeur de retour

La valeur de retour est de type bytes.

Elle correspond à la séquence d'octets résultant de l'encodage.

Exceptions

Exemple(s) de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
#!/usr/bin/python3

message = "Un éléphant très agaçant"

print(message.encode(encoding="ascii", errors="backslashreplace"))
print(message.encode(encoding="ascii", errors="ignore"))
print(message.encode(encoding="ascii", errors="namereplace"))
print(message.encode(encoding="ascii", errors="replace"))
print(message.encode(encoding="ascii", errors="xmlcharrefreplace"))
print(message.encode(encoding="ascii", errors="strict"))
Exemple d'utilisation de la méthode encode

Et voici les résultats produits par cet exemple.

$> python3 sample.py
b'Un \\xe9l\\xe9phant tr\\xe8s aga\\xe7ant'
b'Un lphant trs agaant'
b'Un \\N{LATIN SMALL LETTER E WITH ACUTE}l\\N{LATIN SMALL LETTER E WITH ACUTE}phant tr\\N{LATIN SMALL LETTER E WITH GRAVE}s aga\\N{LATIN SMALL LETTER C WITH CEDILLA}ant'
b'Un ?l?phant tr?s aga?ant'
b'Un &#233;l&#233;phant tr&#232;s aga&#231;ant'
Traceback (most recent call last):
  File "/home/dominique/Test.py", line 8, in <module>
    print(message.encode(encoding="ascii", errors="strict"))
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 3: ordinal not in range(128)
$>

Voir aussi

Classe str