'ascii' codec can't encode character

Python Erreur courante

Explication

L'erreur `UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' ...` survient quand vous **écrivez ou encodez** du texte contenant des accents (`é`, `à`, `ç`) vers un encodage **ASCII** qui ne sait pas les représenter. Cela arrive en encodant explicitement en ASCII, ou en écrivant vers une sortie (fichier, console) dont l'encodage par défaut est limité. ```python texte = "café" octets = texte.encode("ascii") # UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 3 ```

Causes courantes

- **Encodage explicite en ASCII** d'un texte accentué. - **Écriture dans un fichier** sans préciser `encoding="utf-8"`. - **`print` vers une console Windows** configurée en `cp1252`. - **Locale système** ancienne ou mal configurée (serveurs).

1. Encodez (ou écrivez) en UTF-8

octets = "café".encode("utf-8")   # ✅

with open("sortie.txt", "w", encoding="utf-8") as f:
    f.write("café")                # ✅

2. Forcez l'encodage de la sortie standard

import sys
sys.stdout.reconfigure(encoding="utf-8")   # Python 3.7+

Ou définissez la variable d'environnement PYTHONUTF8=1 (ou PYTHONIOENCODING=utf-8).

3. Si vous devez vraiment de l'ASCII, retirez les accents

import unicodedata
def sans_accents(s):
    return unicodedata.normalize("NFKD", s).encode("ascii", "ignore").decode()
print(sans_accents("café"))   # 'cafe'

Comment prevenir cette erreur

- **Écrivez et encodez toujours en UTF-8** : précisez `encoding="utf-8"` partout. - **Activez `PYTHONUTF8=1`** pour forcer l'UTF-8 par défaut (utile sous Windows et sur les serveurs). - Référence : [docs.python.org — UnicodeEncodeError](https://docs.python.org/fr/3/library/exceptions.html#UnicodeEncodeError).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

Pourquoi ça marche sur ma machine mais pas sur le serveur ?
Parce que l'encodage par défaut diffère (locale système). Précisez explicitement `encoding="utf-8"` à l'écriture, ou activez `PYTHONUTF8=1`, pour un comportement identique partout.
Comment écrire des accents dans la console Windows sans erreur ?
Reconfigurez la sortie : `sys.stdout.reconfigure(encoding="utf-8")`, ou lancez Python avec `PYTHONUTF8=1`. Évitez de compter sur l'encodage par défaut de `cmd.exe`.

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.