当前位置:  开发笔记 > 编程语言 > 正文

pysqlite2:ProgrammingError - 您不能使用8位字节串

如何解决《pysqlite2:ProgrammingError-您不能使用8位字节串》经验,为你挑选了1个好方法。

我目前在sqlite数据库中持久存在文件名以用于我自己的目的.每当我尝试插入具有特殊字符的文件(如é等)时,它会抛出以下错误:

pysqlite2.dbapi2.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.

当我通过使用unicode方法将发送到pysqlite的值包装为"将我的应用程序切换到Unicode字符串"时unicode(filename),它会抛出此错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 66: ordinal not in range(128)

我有什么办法可以摆脱这个吗?修改我的所有文件以符合不是一个选项.

更新 如果我通过解码文本filename.decode("utf-8"),我仍然得到上面的ProgrammingError.

我的实际代码如下所示:

cursor.execute("select * from musiclibrary where absolutepath = ?;",
    [filename.decode("utf-8")])

我的代码应该是什么样的?



1> Nicholas Ril..:

您需要指定filename转换为Unicode 的编码,例如:filename.decode('utf-8').只需使用unicode(...)选择控制台编码,这通常是不可靠的(并且经常ascii).

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有