• mysql utf8编码


    做微信项目,报错

    "Incorrect string value: '\xF0\x9F\x98\x8B' for column 'nickname' at row 1"

      原因是微信昵称中含有表情,表情属于4字节编码,而 mysql utf-8 编码只支持1-3个字节。从MYSQL5.5开始,可支持4个字节UTF编码utf8mb4,utf8mb4兼容utf8,即utf8是utf8mb4的子集。所以之后项目默认应该使用 utf8mb4 子集,不用想那么多。

    所以就改表的编码呗,我没有什么好办法。备份好线上的数据库,然后手动一个一个调整含有 nickname 的表的编码。

    我使用 Django 开发,所以我查了一下 Django 怎么设置默认编码。答案是:

    Hyper simple, just add 'OPTIONS': {'charset': 'utf8mb4'} to your DATABASESconfiguration:

    DATABASES = {
        ’default’: {
            ’ENGINE’: ’django.db.backends.mysql’,
            ’NAME’: ’example’,
            ’USER’: ’example’,
            ’PASSWORD’: ’example’,
            ’HOST’: ’’,
            ’PORT’: ’’,
            ’OPTIONS’: {’charset’: ’utf8mb4’},
        }
    }

    根据上面的设置好了,自然还要使用Django的migrate才会生效。

    之前这个项目因为经手的人多,所以没有使用migrate而是手动创建表,也造成了 settings中设置好了 utf8mb4 但实际还是默认的utf-8。

    参考:

    http://blog.manbolo.com/2014/03/31/using-emojis-in-django-model-fields

    https://my.oschina.net/wingyiu/blog/153357

  • 相关阅读:
    Linux Shell 编程
    Linux下压缩与解压
    rsync实现文件备份同步
    linux中ulimit作用
    3dmax卡通渲染插件pencil+渲染线框
    世嘉开发部部长:这3点能提升游戏留存率
    消息中间件 分布式
    高并发高性能
    你的系统如何支撑高并发
    分布式系统的阿喀琉斯之踵:数据一致性
  • 原文地址:https://www.cnblogs.com/jay54520/p/6227955.html
Copyright © 2020-2023  润新知