UnicodeEncodeErreur :Le codec 'ascii' ne peut pas encoder les caractères à cause d'un problème de base de données

StackOverflow https://stackoverflow.com//questions/24052342

Question

J'ai un champ à extraire de la base de données qui contient une chaîne avec cette partie et en obtenant ceci, j'obtiens une erreur :

"UnicodeEncodeErreur :Le codec 'ascii' ne peut pas encoder les caractères en position 12-15 :ordinal hors de portée (128)"

J'ai recherché cette erreur, et d'autres personnes avaient des problèmes à cause d'Unicodes qui commencent quelque chose comme ceci u'\xa0, etc.Mais dans mon cas, je pense que c'est dû à des caractères spéciaux.Je ne peux pas apporter de modifications à la base de données car elle n'est pas sous mon accès.Je peux simplement y accéder.

Le code est ici :(en fait, son appel à une URL externe)

req = urllib2.Request(url)
req.add_header("Content-type", "application/json")
res = urllib2.urlopen(req,timeout = 50)         #50 secs timeout
clientid = res.read()
result = json.loads(clientid)

Ensuite, j'utilise la variable result pour obtenir la chaîne mentionnée ci-dessus et j'obtiens une erreur sur cette ligne :

updateString +="name='"+str(result['product_name'])+"', "
Était-ce utile?

La solution

Vous devez trouver le codage utilisé pour vos données avant de les insérer dans la base de données.Supposons qu'il s'agisse d'UTF-8 puisque c'est le plus courant.

Dans ce cas, vous souhaiterez décoder UTF-8 au lieu du décodage ascii.Vous n'avez fourni aucun code, donc je suppose que vous l'avez "data".decode().Essayer "data".decode("utf-8"), et si vos données ont été codées avec cet encodage, cela fonctionnera.

Autres conseils

Il me semble donc que la chaîne était déjà Unicode à l'époque.Alors supprimez str() et unicode fonctions sur cette ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top