zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    洛谷 P2480 [SDOI2010]古代猪文
    [六省联考2017]组合数问题
    数据结构--左偏树(可并堆)
    图论--tarjan求割点
    图论--tarjan缩点
    图论--DFS-SPFA求负环
    图论--tarjan求lca
    洛谷 P2163 [SHOI2007]Tree 园丁的烦恼
    数据结构--主席树(不带修改)
    洛谷 P1712 区间
  • 原文地址:https://www.cnblogs.com/jay54520/p/6227955.html
Copyright © 2011-2022 走看看