插入MySQL时出现Unicode错误

时间:2012-11-16 19:04:39

标签: python mysql character-encoding

我有一个脚本可以将随机网页的内容存储到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 )

1 个答案:

答案 0 :(得分:1)

您不能将随机unicode存储在仅包含~256个可能条目的编码中(即latin-1)。将数据库中的编码更改为例如utf-8,你应该好好去。