I tiene un problema con la codificación de la trayectoria variable y de insertarlo a la base de datos SQLite. Traté de resolverlo con la función encode ("utf-8") que no ayudó. Luego usé unicode() función que me da el tipo unicode.Uso de Unicode() y encode() funciones en Python
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 he ganado Unicode tipo, pero todavía tengo el mismo error que estaba presente cuando el tipo de la variables camino era str
sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
Podría ayudar a resolver este error y explicar el uso correcto de las funciones encode("utf-8")
y unicode()
? A menudo peleo con eso.
EDIT:
Este ejecutar() declaración elevó el error:
cur.execute("update docs set path = :fullFilePath where path = :path", locals())
me olvidó cambiar la codificación de fullFilePath variable que sufre el mismo problema, pero estoy bastante confundido ahora. ¿Debo usar solo unicode() o codificar ("utf-8") o ambos?
no puedo usar
fullFilePath = unicode(fullFilePath.encode("utf-8"))
porque plantea este error:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 32: ordinal not in range(128)
Python versión es 2.7.2
¿dónde está el código que provoca el error? – newtover
Su pregunta exacta ya ha sido respondida: [http://stackoverflow.com/questions/2392732/sqlite-python-unicode-and-non-utf-data][1] [1]: http: // stackoverflow.com/questions/2392732/sqlite-python-unicode-and-non-utf-data – garnertb
@newtover He editado la pregunta. – xralf