我有一个脚本可以将随机网页的内容存储到mysql数据库(MySQLdb)中。对于某些页面,我得到:
...
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py",
line 264, in literal
return self.escape(o, self.encoders)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py",
line 202, in unicode_literal
return db.literal(u.encode(unicode_literal.charset))
UnicodeEncodeError: 'latin-1' codec can't encode character
u'\u203a' in position 172550: ordinal not in range(256)
当我使用sqlite3时,我没有遇到任何问题。
我试过这个,没有成功:
CREATE DATABASE the_base CHARACTER SET utf8
问题: 如何正确编码/解码数据,以便存储在数据库中,而不会出现任何问题?
P.S。 python下的字符编码是一个永无止境的故事......
解决
为connect
方法添加了编码:
MySQLdb.connect( ... charset='utf8', use_unicode=True )
答案 0 :(得分:1)
您不能将随机unicode存储在仅包含~256个可能条目的编码中(即latin-1)。将数据库中的编码更改为例如utf-8,你应该好好去。