我正在尝试使用django将以下字符串保存到mysql数据库(我从其他地方获得了该字符串)。
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的事实有关。
实际上,我只是想检测这种情况,也许可以忽略不好的字符。
有什么想法吗?
谢谢
发布于 2013-01-09 19:57:56
MySQL utf8不是真正的UTF-8,而是一个修改后的版本,只支持直到0xFFFF的代码点。您正在尝试使用MySQL utf8中不包含的代码点(0x1F3C9 > 0xFFFF)。
您需要使用相对较新的MySQL版本,并将utf8更改为utf8mb4。到处都是。
连接需要是utf8mb4、排序规则、表/列等。在MySQL上下文中使用utf8的任何地方都是错误的,需要为utf8mb4。
https://stackoverflow.com/questions/14233764
复制相似问题