【问题标题】:Storing long string of HTML in SQLite database causes unknown error在 SQLite 数据库中存储长的 HTML 字符串会导致未知错误
【发布时间】:2011-09-24 03:26:46
【问题描述】:
我将一些 HTML 存储在 Python 中的 SQLite3 数据库中。
当我在我的 SQL 表中插入一些 HTML 时,我收到一个错误,我不明白出了什么问题,更重要的是如何解决这个问题。
错误字符串:
一般例外:您不得使用 8 位字节串,除非您使用可以解释 8 位字节串的 text_factory(如 text_factory = str)。强烈建议您将应用程序切换为 Unicode 字符串。
我要插入表格的 HTML 字符串很长(大约 700 个字符)。
知道出了什么问题以及如何解决这个问题吗?
【问题讨论】:
标签:
python
sql
sqlite
unicode
【解决方案1】:
查看this question 的答案,您的问题似乎是您尝试插入的 HTML 中包含未映射到 ASCII 的字符。如果您致电unicode(my_problematic_html),您可能会收到UnicodeEncodingError。在这种情况下,您需要通过调用 decode 将有问题的字符串表示形式转换为 unicode:
my_unicoded_html = my_problematic_html.decode("utf-8")
然后将my_unicoded_html 写入数据库。
你会想阅读Unicode In Python Completely Demystified。
* 请注意,您的 HTML 可能被编码为 utf-8 以外的其他编解码器(格式?...字符集?)。 latin-1 也是一个不错的猜测,如果您使用的是 Windows(或者 HTML 可能来自 Windows 机器)。