Erreur de décodage : "UnicodeDecodeError, octet de continuation invalide"
Lors de la tentative de décodage d'une chaîne contenant des caractères non-ASCII à l'aide de l'UTF-8 codec, vous pouvez rencontrer l'erreur "UnicodeDecodeError: invalid continuation byte". Cette erreur indique que la chaîne contient une séquence d'octets qui n'est pas un octet de continuation UTF-8 valide.
Dans l'exemple spécifique fourni :
o = "a test of \xe9 char" v = o.decode("utf-8")
La chaîne o contient le caractère non-ASCII xe9 (é). Lorsque vous tentez de le décoder à l'aide du codec UTF-8, il échoue avec l'erreur susmentionnée car xe9 est un octet de continuation UTF-8 non valide.
Solution
La solution consiste à utiliser un codec différent capable de gérer les caractères non-ASCII de la chaîne. Dans ce cas, vous pouvez utiliser le codec latin-1, conçu pour gérer les caractères d'Europe occidentale, y compris les caractères accentués comme é :
v = o.decode("latin-1")
Explication
Le Le codec latin-1 est un jeu de caractères à un octet qui comprend 256 caractères, dont les lettres de l'alphabet anglais, des caractères accentués et quelques signes de ponctuation. Il est couramment utilisé pour coder du texte dans les langues d'Europe occidentale.
En utilisant le codec latin-1, vous pouvez décoder avec succès la chaîne o sans rencontrer l'exception "UnicodeDecodeError".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!