数据库 大家 MySQL 如何存储 emoji 的?

as181920 · 2015年02月02日 · 最后由 dylanninin 回复于 2015年05月18日 · 6894 次阅读

emoji 字符在 postgresql 中一切正常,mysql 中需要用 utf8mb4 格式,不知道会有多少影响。

目前由于使用云数据库,基本只能用 mysql 了,没找到比较好的解决方案,有遇到过的给个参考意见:)

采用 utf8mb4 类型,对索引名字长度有影响。

https://ruby-china.org/topics/7253 原来有过了

不过数据量大,数据库不敢动。

如果不好升级调整数据库,可以 base64 后再存,读的时候再转换一遍

utf8mb4, MySQL 5.6 以上

目前唯一的问题就是 Chrome 浏览器无法直接显示

#3 楼 @vincent 是那整个文本字段 base64 吗?那从数据库管理软件看一篇文章的时候,岂不都是乱码了。 看了这篇文章,发现改动还是太大: http://mumaren.me/blog/2013/11/27/support-emoji-in-rails-3-dot-2-14/

要不先嵌入 bbcode,类似于 [:smile:],读出的时候再替换?

不用 mysql 用 pg...

#5 楼 @Peter 对整个文本做 base64 encode,读取的时候再 decode,就在 model 里做修改就好了。如果要兼容原有数据,可以增加一个 text_format 字段,里面存放文本格式,只有 base64 格式的文本才需要转换。我们就是这么处理的。

还有一种方法可以是用 blob 类型来存文本。

#7 楼 @vincent base64 是好办法,多谢。

#3 楼 @vincent 这个方法不错 👍

看来还是 mongodb 好啊

#6 楼 @luikore 国内的云服务商基本上都是只有 MySQL,没有 PostgreSQL,我也很不解……

#11 楼 @nouse 还好我不用...

#11 楼 @nouse MySQL 的 DBA 很好找,但是 pg 的很难找,云服务商估计也是综合考虑了规模化以后的运营可靠,以及国内技术市场对两者接纳程度的不同。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号