最近,将一个部署在阿里云上的 Rails 项目,连接的 MySQL 数据库的编码,由 utf8 调整为 utf8mb4。
实施过程不是非常顺利,目前,已经部署完成,观察了一段时间,比较稳定。
写了本篇总结,希望可以帮到有需要的朋友。
环境说明
服务器系统 Centos,版本为 6.5;
数据库使用的是阿里云 RDS MySQL,版本为 5.5.18;
Rails 版本为 4.1.2;
mysql2 Gem, 版本为 0.3.16。
为什么要使用 utf8mb4 编码
根本的原因在于,采用 utf8 编码的 MySQL 无法保存占位是 4 个字节的 Emoji 表情。
为了使后端的项目,全面支持客户端输入的 Emoji 表情,升级编码为 utf8mb4 是最佳解决方案。
之前一篇博文有讲到,不调整 MySQL 编码,使用 rumoji 替换 Emoji 表情为字母编号。
博客原文链接:Ruby on Rails Use MySQL DB Support iPhone emoji
http://manageyp.github.com/ruby-on-rails/2014/12/10/ruby-on-rails-use-mysql-db-support-iphone-emoji.html
但是,这样处理至少有两个问题:
Emoji 表情会持续的更新,rumoji 库如果没有及时更新,输入新的表情,则会报错。
使用 rumoji 对用户输入的字符,做正则匹配解析,增