[Python-es] Error codificación carácteres

lopz lowlifebob en gmail.com
Lun Feb 28 20:48:29 CET 2011


hace poco he tenido un problema similar al tuyo y usando sqlite3, el
problema viene dado de que
estás queriendo meter un caracter que ocupa más espacio en memoria de
lo que soporta
el tipo declarado en tu DB, lo que tienes que hacer es primero al
momento de guardar el caracter o
el string en el campo tienes que hacerle un decode, y al momento de
mostrarlo en terminal y algún otro lado
le haces un encode, así no te aparecerá un símbolo raro, ya que
depende mucho en donde lo muestres y que codificación
soporta.

Bueno, lo puedes solucionar de esta manera

self.db.execute(SQL_STRING, (dork.decode('utf-8'), ))

Eso aplicas el momento de insertar tus datos o hacer un update.

Espero que te solucione el problema

saludOS


El día 28 de febrero de 2011 15:08, Jesús Genicio <jgenicio en gmail.com> escribió:
> El lun, 28-02-2011 a las 09:06 +0100, Antonio Alvarado Hernández
> escribió:
>> Hola Jesús,
>>
>> Los temas de encoding de tus ficheros fuente, se resuelven como bien
>> te han comentado Juan, lopz y Oscar (no sé si me he dejado a alguien).
>>  Pero, si lees/escribes datos desde fichero, te toca la hacer como te
>> han explicado Raúl, Luis, Andrey (y seguro que se me escapa otro).
>>
>> Para facilitarte la vida, puedes usar el módulo "codecs". He intentado
>> reproducir tu ejemplo, con este código:
>>
>> # -*- coding: utf-8 -*-
>>
>> from codecs import open
>>
>> INPUT_ENCODING = 'cp1252'
>> OUTPUT_ENCODING = 'utf-8'
>>
>> with open('input.dat', 'rb', INPUT_ENCODING) as infile:
>>       with open('output.dat', 'wb', OUTPUT_ENCODING) as outfile:
>>               while True:
>>                       inline = infile.readline()
>>                       if not inline:
>>                               break
>>                       outline = u"set title '%s (%s)'" % tuple(inline.split('\t'))
>
> He intentado utilizar tu código pero me da errores igualmente.
>
> He adjuntado a pastebin el código completo, si alguien me puede
> ayudar...
>
> http://pastebin.com/x3DFTkjD
>
> S2
>>                       outfile.write(outline)
>>
>> # EOF
>>
>> Fíjate que estoy usando el "open" del módulo "codecs" no el built-in
>> de Python (en mi caso Python 2.7.1).  También debes fijarte en que los
>> valores INPUT_ENCODING y OUTPUT_ENCODING, son arbitrarios: he creado
>> un fichero de datos de entrada (input.dat) con encoding cp1252 (el de
>> Windoze de toda la vida), y a partir de allí, genero un fichero de
>> salida (output.dat) con encoding UTF-8 (el de Linux desde hace un
>> tiempo pa'ca ;-).  Debes ajustarlo a tus necesidades.
>>
>> Saludos,
>> Antonio
>>
>> PD: Mola el tema en el que estás medido... el de los *.MC, no el de
>> los encodings!
>>
>> 2011/2/27 Juan de Dios Manjon Perez <juande en jdmanjon.net>:
>> > Prueba a poner en la primera linea:
>> >
>> > # -*- coding: cp1252 -*-
>> >
>> > Saludos
>> > Juande
>> >
>> >
>> >
>> > On 27/02/2011 19:44, Jesús Genicio wrote:
>> >>
>> >> Hola a tod en s:
>> >>
>> >> Llevo tiempo buscando la solución y no soy capaz. El problema es este:
>> >>
>> >> BME.MC
>> >> Bolsas y Mercados Españoles
>> >> Traceback (most recent call last):
>> >>   File "extraer_datos.py", line 80, in<module>
>> >>     archivo_configuracion.write("set title '%s (%s)'\n"
>> >> %( Nombre_Valor,id,))
>> >> UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in
>> >> position 33: ordinal not in range(128)
>> >>
>> >> Los datos los saco de una base de datos y tiene el formato Español, con
>> >> eñes y acentos, etc..
>> >>
>> >> Pero al ejecutar este script, me tira el error y separa. ¿Qué hago mal.?
>> >>
>> >>
>> >> Gracias por vuestra ayuda.
>> >>
>> >>
>> >>
>> >>
>> >> _______________________________________________
>> >> Python-es mailing list
>> >> Python-es en python.org
>> >> http://mail.python.org/mailman/listinfo/python-es
>> >> FAQ: http://python-es-faq.wikidot.com/
>> >>
>> >
>> > _______________________________________________
>> > Python-es mailing list
>> > Python-es en python.org
>> > http://mail.python.org/mailman/listinfo/python-es
>> > FAQ: http://python-es-faq.wikidot.com/
>> >
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



-- 
lopz es libre, usa --> GNU/linux gentoo

+--[RSA 2048]--+
|  ..o.o=+       |
|   o =o*.+      |
|  . . *oO .      |
|     .EBoo      |
|      o.S         |
+--[lopz.org]--+


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