让应用程序支持emoji字符

廖雪峰 / 编程 / 2017-4-20 22:01 / 阅读: 5051

什么是emoji?就是这些表情和符号:

?????????

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

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

服务器端要正确存储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就只能呵呵了

让应用程序支持emoji字符 廖雪峰 / 编程 / 2017-4-20 22:01 / 阅读: 5051 什么是emoji?就是这些表情和符号:相关推荐

  1. linux支持表情的字体,让应用程序支持emoji字符

    什么是emoji?就是这些表情和符号:

  2. python在末尾加关闭程序_廖雪峰的Python教程教程-02

    廖雪峰的Python教程: Python教程​www.liaoxuefeng.com 廖老师的小结: 1) list[],一种有序的集合: 用len()函数可以获得list元素的个数: 索引是从0开始 ...

  3. 廖雪峰Git简明教程整理

    廖雪峰Git简明教程 声明:本教程完全搬运自廖雪峰老师的个人网站,仅限于学习使用.所有版权归廖雪峰老师所有.整理人为Megatron,如果侵权请联系本人zhangwz93@foxmail.com删除. ...

  4. Java基础知识 廖雪峰教程笔记

    Java基础知识 Java基础知识 java简介 名词解释 运行Java程序 Java基本数据类型 模块 包装类型 记录类 异常处理 Java异常 使用Commons Logging 使用log4j ...

  5. 廖雪峰Python电子书总结

    函数 1.注意:函数的默认参数必须指向不可变对象 未修改前: def add_end(L=[]): L.append('END') return L 存在的问题:如果连续调用多次,会出现多个 'END ...

  6. 【python】廖雪峰学习笔记

    廖雪峰python学习笔记 Python解释器 python 基础 输入输出 数据类型和变量 字符串和编码 list和tuple dict和set del删除的是变量,而不是数据 函数 高级特性 函数 ...

  7. 如何找到python廖雪峰基础_python3 基础 廖雪峰教程笔记-1

    廖雪峰教程文档:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143252 ...

  8. python老师武_跟着廖雪峰老师学python (5)

    若想技术精进,当然得把基础知识打得牢牢的. 廖雪峰的官方网站  python3教程,该网站提供的教程浅显易懂,还附带了讲学视频,非常适合初学者正规入门. 以下是通过廖雪峰python官方网站学习的个人 ...

  9. 廖雪峰老师的Python入门 day01

    廖雪峰老师Python入门教程(一) 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合 ...

最新文章

  1. 那些年,我们一起刷过的计算机视觉比赛
  2. 目录/文件攻击防范策略研究
  3. 武装机器狗不会自主杀人,监管自主杀伤性武器是政府的事,机器狗公司CEO这样说...
  4. ETSI MEC — 容灾组网模型
  5. JS替换空格回车换行符
  6. 06/05/2015
  7. 百度seo指南_什么是SEO?网站怎么做SEO优化(问答篇)
  8. The Digits String
  9. python中def _init_是什么意思_详细解读Python中的__init__()方法
  10. 《风暴英雄》里那些超棒的游戏设计
  11. serverless搭建html,基于ServerLess的极简网页计数器:源码分析与实践
  12. 使用NavigationUI更新UI组件
  13. Gensee移动SDK之(一)结构组成
  14. php环境苹果搭建,mac下搭建php环境
  15. cv2.cornerHarris()详解 python+OpenCV 中的 Harris 角点检测
  16. linux配置libpng环境变量_不同操作系统下 jdk 的配置
  17. 特征选择 ReliefF算法
  18. mysql基础之mariadb库管理和表管理语句
  19. ai能不能同时切割多个对象_今天才发现,AI有这9个隐藏技能...
  20. 关于MinGW和MSYS

热门文章

  1. 操作系统中的用户空间和内核空间
  2. 剑指offer (02):实现 Singleton 单例模式 (Python 实现详解)
  3. input的一些使用方法
  4. 灵活强大的MySQL代理中间件ProxySQL应用实战(2)
  5. python三层设计_推荐3个Python实现算法和设计模式的工具
  6. python zlib module_python 安装 setuptools Compression requires the (missing) zlib module 的解决方案...
  7. Lambda表达式的生动理解以及Java Lambda表达式常见使用场景
  8. 安卓添加滚轮代码_[按键精灵手机版教程]安卓实战——制作天天酷跑脚本(2)...
  9. android udp获取ip,安卓开发 局域网UDP获取服务器Ip地址
  10. 郑州大学Oracle期末,郑州大学软件学院2011到2012学年第二学期Oracle期末试卷.doc