UnicodencodeError: 'ASCII' CODEC no puede codificar caracteres debido a í © Nación de la base de datos
-
21-12-2019 - |
Pregunta
Tengo un campo para obtener de la base de datos que contiene una cadena con esta parte © Ã © N y al obtener esto, obtengo un error:
"UnicodencodeError: 'ASCII' CODEC no puede codificar caracteres en la posición 12-15: Ordinal no en el rango (128)"
He buscado este error, y otras personas estaban teniendo problemas debido a los unicos que comienzan a algo así como este u'\xa0
, etc. Pero en mi caso, creo que se debe a caracteres especiales.No puedo hacer cambios en la base de datos, ya que no está bajo mi acceso.Solo puedo acceder a ella.
El código está aquí: (En realidad, su llamada a URL externa)
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)
Luego, utilizo la variable de resultados para obtener la cadena mencionada anteriormente y obtengo un error en esta línea:
updateString +="name='"+str(result['product_name'])+"', "
Solución
Debe encontrar la codificación para los que se usa para sus datos antes de que se inserte en la base de datos.Supongamos que es UTF-8 ya que es el más común.
En ese caso, querrá decodificar UTF-8 en lugar de decodificar ASCII.No proporcionó ningún código, así que asumo que tiene "data".decode()
.Intente "data".decode("utf-8")
, y si sus datos se codificaron utilizando esta codificación, funcionará.
Otros consejos
para que me suene como la cuerda ya era unicode entonces.Así que elimine las funciones de str()
y generacodidiccode en esa línea.