Problema con utf8 en mysqldb

Rubén Jarque Torrejón rubenjarque en gmail.com
Mie Dic 19 19:06:17 CET 2007


He conseguido arreglar mi problema, pero de una forma bastante sucia. En el
archivo "cursors.py" del conector mysqldb he encontrado la siguiente línea:

charset = db.character_set_name()

Comprobando que charset tiene el valor "latin1", tras esa instrucción,
aunque no entiendo por qué motivo.

Por lo que he añadido:

charset = "utf8"

A falta de una solución más elegante, dejo esto, por si a alguien le pudiera
servir de ayuda.

Un saludo.

El día 19/12/07, Rubén Jarque Torrejón <rubenjarque en gmail.com> escribió:
>
> Gracias por la respuesta Sonia, pero mi problema es al revés. Yo en python
> genero una cadena utf8, que puedo imprimirla sin problemas. El problema lo
> tengo al intentar insertarla en la base de datos mysql (de la que puedo leer
> cadenas utf8), que el driver hace una conversión a latin-1. Yo pensaba que
> el problema debía estar con el conector de python, pues en la base de datos
> no tengo problemas para insertar cadenas utf8.
>
> Gracias de todos modos.
>
> El día 19/12/07, Sonia Fas Millán <al013193 en alumail.uji.es> escribió:
> >
> >
> > Precisamente ayer me tiré yo unas cuantas horas hasta que conseguí
> > solucionar
> > esa historia y todavía no entiendo cómo ni por qué llegó a ir, pero te
> > cuento
> > mi caso por si te sirve.
> > En mi caso no es mysql sino sqlite. A mí me insertaba sin problemas los
> > campos
> > de un formulario, luego hacías un select desde el prompt de la base de
> > datos y
> > aparecían ahí los acentitos y las eñes todos bonicos. Pero cuando
> > trataba de
> > imprimir con python las tablas me daba el error que te da a tí, pese a
> > tener en
> > la cabecera lo de
> > # -*- coding: utf-8 -*-
> >
> > Al final ésto me fue bien:
> >
> > str = variable.encode("utf-8"), donde variable contiene el campo de
> > texto de la
> > base y ya se imprimía str sin problemas.
> >
> > Pero luego en otra función en la que hacía exactamente lo mismo,
> > imprimir campos
> > de la base de datos que tenían acentos y eñes, eso no me iba. ?_? Para
> > ponerte
> > en situación lo que yo hago en ambas funciones es construir una cadena
> > tocha de
> > html que se manda a imprimir (es django, todo esto), por lo que a la
> > hora de ir
> > pegando cosas a esa cadena tengo que ir haciendo
> > cadena+="bla"+str(variable).
> > Pues bien, en esa segunda función la variable con el campo del
> > formulario que
> > contenía acentos la pegaba a la cadena de esa forma, y no iba, me daba
> > tu
> > error. Hacer lo del encode no lo solucionaba. Al final va y por probar
> > ya
> > desesperadamente le quito el str y va. o_o
> >
> > Bueno, espero que te sirva de algo.
> >
> > Un saludo
> >
> >
> >
> > _______________________________________________
> > Lista de correo Python-es
> > http://listas.aditel.org/listinfo/python-es
> > FAQ: http://listas.aditel.org/faqpyes
> >
>
>
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es