自iPhone从iOS 5在输入法中开始支持emoji以来,这些表情符号迅速风靡世界。但是很多Web网站竟然还不!支!持!!!

那怎么才能支持emoji呢?其实代码一行都不用改,因为emoji符号实际上是文本,并不是图片,它们仅仅显示为图片而已。而且,emoji符号已经被标准化并编码到最新的Unicode标准中了,所以,要支持emoji,只需要底层软件系统支持就可以了。

百牛信息技术bainiu.ltd整理发布于博客园

服务器端要正确存储emoji符号,只需要确保Web程序和底层数据库能支持最新的Unicode标准就可以了。

如果使用MySQL作为数据库,需要升级到5.5.3或更新的版本,然后,把默认编码从原来的utf8改为utf8mb4,在my.cnf或者my.ini配置文件中修改如下:

[client]
default-character-set = utf8mb4 [mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

重启MySQL,然后使用以下命令查看编码,应该全部为utf8mb4(character_set_filesystem和character_set_system除外):

mysql> show variables like '%char%';
+--------------------------+--------------------------+
| Variable_name | Value |
+--------------------------+--------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql-5.7.... |
+--------------------------+--------------------------+
8 rows in set (0.00 sec)

使用命令查看collation设置,应该全部是utf8mb4_general_ci

mysql> show variables like '%coll%';
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database | utf8mb4_general_ci |
| collation_server | utf8mb4_general_ci |
+----------------------+--------------------+
3 rows in set (0.01 sec)

如果character_set_database还是为utf8,需要重启服务器。

现在,MySQL就可以正确存储emoji字符了。

Web软件

要支持emoji,需要Web软件也支持。目前,已知支持emoji的包括:

  • Java 8
  • Node

最后,如果你的Web应用程序没有使用标准的UTF-8编码,而是使用了GBK等编码,想要支持emoji就只能呵呵了

最新文章

  1. sql 从一个库中取某个表的数据导入到另一个库中相同结构的表中
  2. Troubleshooting a node by using the netapp SP
  3. Android中自定义checkbox样式
  4. TYVJ P1083 分糖果 Label:bfs
  5. bzoj3163: [Heoi2013]Eden的新背包问题
  6. 细雨学习笔记:Jmeter之post processors(后置处理器)
  7. tRNAscan-SE
  8. 淘管 ERP项目与淘宝对接中产生的若干问题及处理办法
  9. 面向对象程序设计-C++ Stream & Template & Exception【第十五次上课笔记】
  10. Swift Swift语言Storyboard教程:第二部
  11. COJ 1102 - You Can Say 11 题解
  12. jQuery中的常用内容总结(一)
  13. [Abp 源码分析]三、依赖注入
  14. 附录B——MySQL样例表
  15. jQuery 传递对象参数到Spring Controller
  16. selenium自动化测试原理和设计的分享
  17. Emmet 记录
  18. poj3304(是否存在一条直线与所有给出线段相交
  19. ocos2d-x 3.0坐标系详解--透彻篇 ---- convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。
  20. 使用AJAX技术发送异步请求,HTTP服务端推送

热门文章

  1. Ubuntu中一次更改用户名带来的连锁反应
  2. C++ sort函数用法
  3. 抽象类的子类能够new
  4. 小贝_redis hash类型学习
  5. 通过串口工具下发指令的Python脚本
  6. iOS进程间通信之CFMessagePort
  7. 功能强大的Xcode辅助工具Faux Pas:帮你找到各种隐形的bug
  8. non-blocking I/O
  9. Avro Parquet
  10. Ubuntu 14.04中安装tftp