将unicode象形图保存到mysql

Posted

技术标签:

【中文标题】将unicode象形图保存到mysql【英文标题】:Save unicode pictograms to mysql 【发布时间】:2019-07-10 23:09:38 【问题描述】:

我有一些代码(在 django 服务器上)将 POST 请求中包含的 json 数据写入 mysql db。 有些请求包含特定的象形图,例如 ????要么 ????。 这些应该被写入文本字段,但会导致数据库错误。

处理请求的代码如下所示

            json_data = json.loads(request.body.decode('utf-8'))
            i = Event(event=json_data['event'], dt=parse(json_data['dt']),
                      object_id=json_data['object_id'], user_id=json_data['user_id'],
                      payload=json_data['payload'])
            i.save()

db 排序规则当前设置为 uft8_general_ci。

返回的错误是“不正确的字符串值”。

将此类请求与其他请求一起保存到数据库的最佳做法是什么?

更新:通过将排序规则更改为 utf8mb4_general_ci,我现在可以直接将这些符号写入 db(通过 phpmyadmin),但 python 请求仍然没有运气。同样的错误。 django 方面的东西?

【问题讨论】:

您需要使用 UTF8MB4 请为相关表格提供SHOW CREATE TABLE。我们需要验证有问题的CHARACTER SET utf8mb4,而不是utf8 【参考方案1】:

将 MySQL 字符集更改为 utf8mb4 将允许您将象形图直接序列化到 DB,但为了在 Django 端解决此问题,您还必须更新您的 settings.py(见下文):

DATABASES = 
    'default': 
        'ENGINE':'django.db.backends.mysql',
        'NAME': 'mydatabase',
        'OPTIONS': 'charset': 'utf8mb4',
     

另见MySQL “incorrect string value” error when save unicode string in Django

【讨论】:

以上是关于将unicode象形图保存到mysql的主要内容,如果未能解决你的问题,请参考以下文章

echarts图表——主题河流图&象形柱图

tableView 单元格的正常和选定状态的不同象形图

MySQL 不想存储 unicode 字符

SQL Server 与 MySQL 的 unicode_ci 排序规则的类似物是啥?

UNICODE

阻止单击一次 span 元素上的 onClick 事件