Unicode et encodage en Python et MySQL
L'encodage et Unicode peuvent être des problèmes difficiles à résoudre lors de l'interface entre Python et MySQL. Cela est particulièrement vrai si vous travaillez avec des données contenant des caractères non-ASCII.
Le problème
L'erreur que vous rencontrez :
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 204-230: ordinal not in range(256)
indique que la bibliothèque Python MySQLdb tente d'encoder vos données à l'aide du codec 'latin-1', qui ne peut pas gérer les caractères Unicode en dehors de la plage de 0-255.
Solutions
Il existe deux approches principales pour résoudre ce problème :
1. Gérez-le du côté de la base de données
ALTER TABLE yahoo_questions CONVERT TO CHARACTER SET utf8;
import mysql.connector cnx = mysql.connector.connect(host='localhost', user='user', password='password', database='db_name', charset='utf8')
2. Gérez-le du côté Python
import chardet data = data.encode('utf-8')
import MySQLdb conn = MySQLdb.connect(host='localhost', user='user', password='password', db='db_name', charset='utf8')
Conclusion
En gérant correctement Unicode et l'encodage, vous pouvez vous assurer que les données sont insérées et récupérées depuis votre base de données MySQL sans erreurs .
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!