Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2015, 09:12
sarayo2
 
Fecha de Ingreso: noviembre-2015
Mensajes: 9
Antigüedad: 8 años, 6 meses
Puntos: 0
Pregunta UnicodeEncodeError /dajaxice/ 'ascii' codec can't encode character u'\xd3'

Buenas amigos,
Tengo un problema con este error que llevo dándole vueltas unos días y no consigo solucionarlo.
Antes de nada quisiera comentaros que en desarrollo no tengo problema y me está funcionando pero en producción no me funciona y me muestra este error.
Saben qué puede estar sucediendo?
Igual en desarrollo funciona por un motivo que no llego a entender, si me pudieran ayudar se lo agradecería.

Os pongo mi código por si os puede ayudar.
ajax.py
-----------
En el inicio he probado definir # -*- coding: ISO-8859-1 -*- o # -*- coding: utf-8 -*- pero no hay cambios.

def dajaxice_cons_precon(request,c):
bd = MySQLdb.connect("localhost","root","","ofp" )
cursor = bd.cursor(MySQLdb.cursors.DictCursor)
cursor.execute(c)
resultados = cursor.fetchall()

cuenta = 1
cursor.close()
bd.close()
cad ="<table>"
cad +="<tr><td>"
cad +="<table style='width: 500px; height: 70px;' class='table-bordered table-condensed'>"

cad +="<body>"
for registro in resultados:
print "registro: ", registro
cabecera = registro.keys()
longitud = len(cabecera)
if longitud == 1:
cabecera = registro.keys()
if cabecera[0] == 'count(1)' or 'numero':
columna0 = cabecera[0]
cad +="<td>"+ str(registro[columna0]) +"</td>"
else:
longitud = len(cabecera)
n = 0
if longitud == 1:
columna0 = cabecera[0]
if longitud == 2:
columna0 = cabecera[0]
columna1 = cabecera[1]
if longitud == 3:
columna0 = cabecera[0]
columna1 = cabecera[1]
columna2 = cabecera[2]
if longitud == 4:
columna0 = cabecera[0]
columna1 = cabecera[1]
columna2 = cabecera[2]
columna3 = cabecera[3]


if cuenta == 1:
if longitud == 2: cad +="<thead><th><a>" + cabecera[0] + "</a></th><th><a>" + cabecera[1] + "</a></th></thead>"
if longitud == 3: cad +="<thead><th><a>" + cabecera[0] + "</a></th><th><a>" + cabecera[1] + "</a></th><th><a>" + cabecera[2] + "</a></th></thead>"
if longitud == 4: cad +="<thead><th><a>" + cabecera[0] + "</a></th><th><a>" + cabecera[1] + "</a></th><th><a>" + cabecera[2] + "</a></th><th><a>" + cabecera[3] + "</a></th></thead>"

cuenta+=1

if n <= longitud:
cad +="<tr>"
if longitud >= 1:
cad +="<td>"+ str(registro[columna0]) +"</td>"
if longitud >= 2:
cad +="<td>"+ str(registro[columna1]) +"</td>"
if longitud >= 3:
cad +="<td>"+ str(registro[columna2]) +"</td>"
if longitud >= 4:
cad +="<td>"+ str(registro[columna3]) +"</td>"


cad +="</tr>"

cad +="</body>"
cad += "</table>"
cad +="</td></tr>"
cad +="</table>"
cadena = cad.decode('ISO-8859-1')

return simplejson.dumps({'message':' %s ' % cadena})

Esta cadena forma una tabla que la pinto en una ventana html vacía.

ventana.html
----------------
<!DOCTYPE html>
<html>
<meta http-equiv="content-type" content="text/html" charset=ISO-8859-1">
<body>
<div class="modal" id="foo_modal" role="dialog" style="display:none">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
Error al obtener los datos
</div>
<div class="modal-footer">
<input name="cancel" class="btn" onclick="cerrarModal();" value="Cancel"/>
</div>
</div>
</div>
</div>
</body>
</html>

La tabla en mysql está definida de la siguiente forma:
tslgiclt CREATE TABLE `tslgiclt` (
`ID_COLECTIVO` varchar(50) COLLATE utf8_spanish_ci NOT NULL,
`NOMBRE` varchar(150) COLLATE utf8_spanish_ci DEFAULT NULL,
`DESCRIPCION` varchar(255) COLLATE utf8_spanish_ci DEFAULT NULL,
`TSLGICLTcol` varchar(50) COLLATE ...

y la base de datos
ofp CREATE DATABASE `ofp` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci */

No se que puede estar sucediendo. Alguien puede ayudarme?
Muchas gracias de antemano