[pyar] Problema con acentos en Sqlite y Python

Juan A. Diaz juan en linux.org.ar
Lun Abr 4 22:01:27 ART 2011


On lun, 2011-04-04 at 22:27 -0300, Roberto Alsina wrote:
> craf writes:
> 
> > Hola Roberto.
> > 
> > He tratado de convertir explícitamente la cadena a unicode con el
> > siguiente código pero sin resultado:
> > 
> > ---Código-----
> > #! /usr/bin/env python
> > # -*- encoding: utf-8 -*-
> > 
> > import sqlite3
> > 
> > 
> > conn = sqlite3.connect('/mi_ruta/bdatos.db')
> > c = conn.cursor()
> > valor = 1
> > nombre =u'Chañaral'
> > t =(valor, nombre)
> > c.execute('insert into tabla1 values(?, ?)',t)
> > conn.commit()
> > c.close()
> 
> Aca no estas convirtiendo la cadena a utf-8 en ninguna parte.
> Declaraste que el archivo es utf-8 (con el comentario) y 
> declaraste que nombre es un literal unicode (conla u).
> 
> Los literales unicode no son utf-8 ni ningun otro encoding, son unicode.
> Para convertirlo a utf-8, tenes que hacer nombre.encode('utf-8')
> 
> > Ahora, realmente no se por donde pueda estar guardándose en Latin-1,
> > porque me imagino que al utilizar el encode a UTF-8 lo estaría guardando
> > con esa codificación en la base de datos(¿o no?).
> 
> No necesariamente.
> 
> > El archivo que se crea con Geany también se guarda en utf-8.
> 
> Como estas seguro de esto?


Para estar seguro podes abrir una consola y usar el comando file

nueces en indigo:~$ echo "á" > a
nueces en indigo:~$ file a
a: UTF-8 Unicode text

nueces en indigo:~$ echo b > b
nueces en indigo:~$ file b
b: ASCII text

Saludos.

nueces...




More information about the pyar mailing list