2013-01-09 66 views
0

我试图使用Django保存以下字符串,MySQL数据库(我从别的地方字符串)保存的Unicode数据库

m.cr1 = u"\U0001F3C9" # cr1 is models.CharField(max_length=50) 
m.save() 

我得到的错误

Warning: Incorrect string value: '\xF0\x9F\x8F\x89' for column 'cr1' at row 1 

我已经在这里查看了其他相关的问题,并将mysql更改为utf8_unicode_ci,但这没有帮助。一般来说,我的代码适用于unicode,但不适用于此特定情况。

我想这与32位unicode这个事实有关。

我其实只是想检测这种情况,也许忽略不好的字符。

任何想法?

感谢

+0

这[post](http://mathiasbynens.be/notes/mysql-utf8mb4)也可能对您有所帮助。 – doru

回答

2

MySQL的utf8是不是真正的UTF-8,但修改的一个仅支持代码点数可达0xFFFF。您正在尝试使用未包含在MySQL utf8中的代码点(0x1F3C9>0xFFFF)。

您需要拥有较新版本的MySQL,并将utf8更改为utf8mb4。到处。

连接需要是utf8mb4,排序规则,表/列等。你在MySQL环境中的任何地方都有utf8是错误的,并且需要是utf8mb4

+0

许多感谢。我现在有Django的问题,我会看看他们。 – eran