【发布时间】:2012-05-10 15:33:31
【问题描述】:
我正在尝试从 iPhone 应用程序中保存 cmets,该应用程序可能并且现在最有可能将包含表情符号。无论我做什么,我都无法将表情符号保存到 MySQL 数据库中……不断出现 Unicode 错误。
- Python 2.6.5
- Django 1.2.1
- MySQL 数据库(表和行设置为 utf8 字符集)
- 将数据保存到 VARCHAR(255) 字段
我一直收到的错误是:
Incorrect string value: '\xF0\x9F\x97\xBC \xF0...' for column 'body' at row 1
我传入数据库的字符串是:
test_txt = u"Emoji - \U0001f5fc \U0001f60c \U0001f47b ...".encode('utf-8')
更新:这是我正在使用的模型:
class ItemComment(db.Model):
item = db.ForeignKey(Item)
user = db.ForeignKey(Profile)
body = db.CharField(max_length=255, blank=True, null=True)
active = db.BooleanField(default=True)
date_added = db.DateTimeField(auto_now_add=True)
def __unicode__(self):
return "%s" % (self.item)
奇怪的是,如果我尝试将其传递给我在 MySQL 而不是 Django models.py 中创建的字段,它可以正常工作。但是,一旦我在 Django 模型中注册了该字段,它就会死掉。有没有其他方法可以存储这些?
任何想法都会很棒。
我不能再坚持下去了......
更新 2:使用以下 UPDATE 语句在终端中跟踪它(注意 U0001f5fc)
UPDATE 'table' SET 'body' = '????', WHERE 'table'.'id' = 1 ; args=(u'\U0001f5fc')
尽我所能传递价值:
force_unicode(smart_str(value), encoding='utf-8', strings_only=False, errors='ignore')
但错误仍然抛出:
_mysql_exceptions.Warning: Incorrect string value: '\xF0\x9F\x97\xBC' for column 'body' at row 1
完全输了!!!
干杯,
【问题讨论】:
-
你能提供你的模型吗?
-
@bossylobster,干杯,刚刚将模型添加到上面的副本中。
-
查看stackoverflow.com/questions/2108824/…,因为你说它在 MySQL 中运行良好,我怀疑这会希望,但值得一试。
-
@bossylobster,不知道为什么,因为它似乎对其他人有所帮助。但我收到完全相同的错误。从外观上看,DB一直设置为utf8。不过还是谢谢...
-
你在设置db为utf8后创建表了吗?我相信至少使用 postgres,编码更改仅适用于新表
标签: iphone python django emoticons