0

我正在尝试使用 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 的事实有关。

我实际上只是想检测这种情况,并且可能忽略坏字符。

有任何想法吗?

谢谢

4

1 回答 1

2

MySQLutf8不是真正的 UTF-8,而是一种修改后的,仅支持最高0xFFFF. 您正在尝试使用未包含在 MySQL 中的代码点 ( 0x1F3C9> ) 。0xFFFFutf8

您需要有相对较新版本的 MySQL,并更改utf8utf8mb4. 到处。

连接需要是utf8mb4、排序规则、表/列等。你utf8在 MySQL 上下文中的任何地方都是错误的,需要utf8mb4.

于 2013-01-09T11:57:56.283 回答