【问题标题】:saving unicode to database将 unicode 保存到数据库
【发布时间】:2012-12-23 09:56:44
【问题描述】:

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

我其实只是想检测一下这种情况,也许是忽略坏字符。

有什么想法吗?

谢谢

【问题讨论】:

  • 这个post 也可能对你有帮助。

标签: python mysql django unicode


【解决方案1】:

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

你需要有比较新版本的MySQL,把utf8改成utf8mb4。无处不在。

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

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 2010-11-14
    • 2019-11-22
    • 2012-07-21
    • 2019-03-31
    • 2013-04-06
    • 1970-01-01
    相关资源
    最近更新 更多