V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
python30
V2EX  ›  Python

现在有些手机都有表情 emoji 等多字节字符,用 utf-8 不够用了,要是用 mysql5.5 5.6 的话怎么解决?我知道用 5.7 可以用 utf8mb4.还有什么好办法? 或流行的

  •  
  •   python30 · 2018-12-24 08:33:38 +08:00 · 3513 次点击
    这是一个创建于 2169 天前的主题,其中的信息可能已经有所发展或是发生改变。
    20 条回复    2018-12-24 12:42:25 +08:00
    des
        1
    des  
       2018-12-24 08:42:56 +08:00 via Android
    你是不是对 utf8 有什么误解,什么叫 utf8 不够用了?
    occam88
        2
    occam88  
       2018-12-24 08:51:44 +08:00 via iPhone
    UTF-8 是变长编码,应该不会出现不太够的情况把
    shoaly
        3
    shoaly  
       2018-12-24 08:54:37 +08:00
    json_encode 可解
    agostop
        4
    agostop  
       2018-12-24 08:55:07 +08:00
    5.5 也有 mb4 吧
    lhx2008
        5
    lhx2008  
       2018-12-24 08:57:09 +08:00 via Android
    5.5 就有 mb4,还有一种方法就是入库前替换成英文别名
    FreshOldMan
        6
    FreshOldMan  
       2018-12-24 09:11:25 +08:00
    上次看了稀里糊涂的,貌似 utf8 是可变的?
    fy
        7
    fy  
       2018-12-24 09:17:45 +08:00
    utf8 类型只能容纳三个字节是 MySQL 独有的,utf8mb4 这种东西也是 MySQL 独有的,实际按照标准有 6 个字节可以用。至于说不够用了怎么办?再把页表掏出来用呗,最后再弄一个新的 uni-unicode 就完了
    python30
        8
    python30  
    OP
       2018-12-24 09:32:06 +08:00
    @lhx2008 这个怎么替换? 指导一下?
    python30
        9
    python30  
    OP
       2018-12-24 09:33:52 +08:00
    @shoaly 刚百度了一下. json_encode 是 php 的? django 的话怎么用?
    lhx2008
        10
    lhx2008  
       2018-12-24 09:37:32 +08:00 via Android
    @python30 去 github 找轮子,笑脸替换成:smile:,要有个表才行
    littleylv
        11
    littleylv  
       2018-12-24 09:41:47 +08:00
    最保险,最方便,最一刀两断的是升级 mysql。5.6 就可以了支持 utf8mb4 了。
    jasonhzy
        12
    jasonhzy  
       2018-12-24 09:44:36 +08:00
    https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-3.html 文档里已经说明 mysql5.5.3 以上均已支持 utf8mb4
    cloverstd
        13
    cloverstd  
       2018-12-24 09:45:25 +08:00 via iPhone
    存成 blob
    NullWithMe
        14
    NullWithMe  
       2018-12-24 09:49:32 +08:00
    utf8mb4 可以
    DavidNineRoc
        15
    DavidNineRoc  
       2018-12-24 09:50:35 +08:00
    楼主描述不清楚导致楼上的可能有些什么误解。
    表情四个字符,utf8 三个字节存储。
    最优:换 utfmb4
    程序:json 内容,然后正则处理
    曲线救国:base64 解决任何一切编码问题 >_<
    NeinChn
        16
    NeinChn  
       2018-12-24 09:54:51 +08:00
    base64 拯救一切....
    shooyaaa
        17
    shooyaaa  
       2018-12-24 09:58:04 +08:00
    我以前用过 base64 编码再存
    fenglangjuxu
        18
    fenglangjuxu  
       2018-12-24 10:03:52 +08:00 via iPhone
    楼上说的 base64 是正解 我也这么干过
    BOYPT
        19
    BOYPT  
       2018-12-24 10:15:38 +08:00
    mysql 的 utf8mb4 是正常的 utf8,mysql 的 utf8 是早产儿先天残废,程序里面按 utf8 处理然后给 utf8mb4 存储才是正常途径。
    mmdsun
        20
    mmdsun  
       2018-12-24 12:42:25 +08:00 via Android
    mysql utf-8 真是坑了不少人
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2799 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:57 · PVG 19:57 · LAX 03:57 · JFK 06:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.