J'ai un problème avec l'encodage du chemin et l'insérer dans la variable SQLite base de données. J'ai essayé de résoudre le problème avec encode("utf-8") ce qui n'a pas aidé. J'ai ensuite utilisé unicode() qui me donne le type 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'>
Finalement, j'ai obtenu unicode mais j'ai toujours la même erreur qui était présente lorsque le type de l'élément chemin était la variable str
sqlite3.ProgrammingError : Vous ne devez pas utiliser de bytestrings 8 bits à moins que vous n'utilisiez pas une fabrique de texte capable d'interpréter des chaînes d'octets 8 bits (comme text_factory = str). Il est fortement recommandé de de basculer votre application sur des chaînes Unicode.
Pourriez-vous m'aider à résoudre cette erreur et m'expliquer l'utilisation correcte de encode("utf-8")
y unicode()
fonctions ? Je me bats souvent avec elle.
EDIT :
Este exécuter() a provoqué l'erreur :
cur.execute("update docs set path = :fullFilePath where path = :path", locals())
J'ai oublié de modifier l'encodage de chemindufichiercomplet qui souffre du même problème, mais je suis assez confus maintenant. Dois-je utiliser uniquement unicode() o encode("utf-8") ou les deux ?
Je ne peux pas utiliser
fullFilePath = unicode(fullFilePath.encode("utf-8"))
parce qu'il soulève cette erreur :
UnicodeDecodeError : le codec 'ascii' ne peut pas décoder l'octet 0xc5 en position 32 : l'ordinal n'est pas dans l'intervalle(128)
Python est 2.7.2