Tengo un problema con la codificación de la variable de ruta y la inserción en la base de datos SQLite . Traté de resolverlo con la función encode ("utf-8") que no ayudó. Luego usé la función unicode () que me da tipo unicode .
print type(path) # <type 'unicode'>
path = path.replace("one", "two") # <type 'str'>
path = path.encode("utf-8") # <type 'str'> strange
path = unicode(path) # <type 'unicode'>
Finalmente obtuve el tipo Unicode , pero todavía tengo el mismo error que estaba presente cuando el tipo de la variable de ruta era str
sqlite3.ProgrammingError: No debe usar cadenas de bytes de 8 bits a menos que use un text_factory que pueda interpretar cadenas de bytes de 8 bits (como text_factory = str). Se recomienda encarecidamente que, en cambio, cambie su aplicación a cadenas Unicode.
¿Podría ayudarme a solucionar este error y explicar el uso correcto de encode("utf-8")
y unicode()
funciones? A menudo estoy luchando con eso.
EDITAR:
Esta instrucción execute () generó el error:
cur.execute("update docs set path = :fullFilePath where path = :path", locals())
Olvidé cambiar la codificación de la variable fullFilePath que sufre el mismo problema, pero ahora estoy bastante confundido. ¿Debo usar solo unicode () o encode ("utf-8") o ambos?
No puedo usar
fullFilePath = unicode(fullFilePath.encode("utf-8"))
porque genera este error:
UnicodeDecodeError: el códec 'ascii' no puede decodificar el byte 0xc5 en la posición 32: ordinal no está en el rango (128)
La versión de Python es 2.7.2