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

2018-12-24 08:33:38 +08:00
 python30
3326 次点击
所在节点    Python
20 条回复
des
2018-12-24 08:42:56 +08:00
你是不是对 utf8 有什么误解,什么叫 utf8 不够用了?
occam88
2018-12-24 08:51:44 +08:00
UTF-8 是变长编码,应该不会出现不太够的情况把
shoaly
2018-12-24 08:54:37 +08:00
json_encode 可解
agostop
2018-12-24 08:55:07 +08:00
5.5 也有 mb4 吧
lhx2008
2018-12-24 08:57:09 +08:00
5.5 就有 mb4,还有一种方法就是入库前替换成英文别名
FreshOldMan
2018-12-24 09:11:25 +08:00
上次看了稀里糊涂的,貌似 utf8 是可变的?
fy
2018-12-24 09:17:45 +08:00
utf8 类型只能容纳三个字节是 MySQL 独有的,utf8mb4 这种东西也是 MySQL 独有的,实际按照标准有 6 个字节可以用。至于说不够用了怎么办?再把页表掏出来用呗,最后再弄一个新的 uni-unicode 就完了
python30
2018-12-24 09:32:06 +08:00
@lhx2008 这个怎么替换? 指导一下?
python30
2018-12-24 09:33:52 +08:00
@shoaly 刚百度了一下. json_encode 是 php 的? django 的话怎么用?
lhx2008
2018-12-24 09:37:32 +08:00
@python30 去 github 找轮子,笑脸替换成:smile:,要有个表才行
littleylv
2018-12-24 09:41:47 +08:00
最保险,最方便,最一刀两断的是升级 mysql。5.6 就可以了支持 utf8mb4 了。
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
2018-12-24 09:45:25 +08:00
存成 blob
NullWithMe
2018-12-24 09:49:32 +08:00
utf8mb4 可以
DavidNineRoc
2018-12-24 09:50:35 +08:00
楼主描述不清楚导致楼上的可能有些什么误解。
表情四个字符,utf8 三个字节存储。
最优:换 utfmb4
程序:json 内容,然后正则处理
曲线救国:base64 解决任何一切编码问题 >_<
NeinChn
2018-12-24 09:54:51 +08:00
base64 拯救一切....
shooyaaa
2018-12-24 09:58:04 +08:00
我以前用过 base64 编码再存
fenglangjuxu
2018-12-24 10:03:52 +08:00
楼上说的 base64 是正解 我也这么干过
BOYPT
2018-12-24 10:15:38 +08:00
mysql 的 utf8mb4 是正常的 utf8,mysql 的 utf8 是早产儿先天残废,程序里面按 utf8 处理然后给 utf8mb4 存储才是正常途径。
mmdsun
2018-12-24 12:42:25 +08:00
mysql utf-8 真是坑了不少人

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/520316

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX