0

我正在尝试将我正在通过 csv 文件读取的文档字符串插入到 sqlite 数据库中,该数据库具有(儿童)等字符,它会引发以下错误:

DatabaseError:您不得使用 8 位字节串,除非您使用可以解释 8 位字节串的 text_factory(如 text_factory = str)。强烈建议您将应用程序切换为 Unicode 字符串。

在插入文档之前,我确保将字符串转换为 unistring 。

unicode('儿童', 'unicode-escape')

我正在使用 Django ORM 来保存数据。我能做些什么来摆脱这个吗?

4

1 回答 1

1

导致错误的 .execute() 参数是 Python 字节字符串,而不是像你说的那样的 unicode 字符串。解决方案:改为创建一个 unicode 字符串:unicode(your_data, your_encoding)。对于大多数 csv 文件,编码将是“l​​atin-1”或“uft-8”。

使用“unicode-escape”几乎肯定是错误的。根据文档( https://docs.python.org/2/library/codecs.html),它是一种特定于 Python 的编码,旨在“在 Python 源代码中生成适合作为 Unicode 文字的字符串” 。

于 2014-05-08T12:45:41.563 回答