• 数据库支持emoji表情


    从MySQL5.5.3开始,MySQL 支持一种utf8mb4的字符集,这个字符集能够支持4字节的UTF8编码的字符。utf8mb4字符集能够完美地兼容utf8字符串。在数据存储方面,当一个普通中文字符存入数据库时仍然占用3个字节,在存入一个Unified Emoji表情的时个它会自动占用4个字节。所以在输入输出时都不会存在乱码的问题了。

    由于utf8mb4是utf8的超集,从utf8升级到utf8mb4不会有任何的问题,直接升级即可;如果从别的字符集如gb2312或者gbk转化而来,一定要先备份数据库。然后,修改MySQL的配置文件/etc/my.cnf,修改连接默认字符集为utf8mb4,然后在连接数据库以后首先执行一句SQL:SET NAMES utf8mb4;

    修改如下:

    # cat /etc/my.cnf 
    # update 2015-3-30
    
    [mysql]
    # CLIENT #
    port                           = 3306
    socket                         = /data1/dbdata/mysql.sock
    default-character-set          = utf8mb4 #关键点1
    
    [mysqld]
    # GENERAL #
    user                           = mysql
    default-storage-engine         = InnoDB
    character-set-server           = utf8mb4 #关键点2

     查看可以查看编码是否已经修改成功:

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

    utf8 转utf8mb4就可以支持emoji表情了

    当重启mysql后,再次登录的时候,出现下面的情况:

    [root@db228 ~]# mysql
    mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

    http://blog.csdn.net/amao1/article/details/34851533

    还需要修改一个修数:

    + +--427 lines: <?xml version='1.0' encoding="utf-8"?>------|+ +--427 lines: <?xml version='1.0' encoding="utf-8"?>-----
        <description>ARMSCII-8 Armenian</description>           |    <description>ARMSCII-8 Armenian</description>
        <alias>armscii-8</alias>                                |    <alias>armscii-8</alias>
        <collation name="armscii8_general_ci" id="32" order="Arm|    <collation name="armscii8_general_ci" id="32" order="Ar
        <collation name="armscii8_bin"    id="64" order="Binary"|    <collation name="armscii8_bin"    id="64" order="Binary
      </charset>                                                |  </charset>
                                                                |  
      <charset name="utf8mb4">#只修改这里(修改后)                |  <charset name="utf8">                                    
        <family>Unicode</family>                                |    <family>Unicode</family>
        <description>UTF-8 Unicode</description>                |    <description>UTF-8 Unicode</description>
        <alias>utf-8</alias>                                    |    <alias>utf-8</alias>
        <collation name="utf8_general_ci" id="33">              |    <collation name="utf8_general_ci" id="33">
         <flag>primary</flag>                                   |     <flag>primary</flag>
         <flag>compiled</flag>                                  |     <flag>compiled</flag>
    + +--158 lines: </collation>--------------------------------|+ +--158 lines: </collation>-------------------------------
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
      ~                                                         |  ~                                                        
    /usr/share/mysql/charsets/Index.xml       436,1          All /usr/share/mysql/charsets/Index.xml.bak  434,1          All

     修改表的字符集:

    mysql> alter table table_name convert to character set utf8mb4 collate utf8mb4_bin;

     打印机不能打印"emoji表情"!!!!!!!!所以最好不要存emoji表情。

  • 相关阅读:
    全选。取消
    Js获取下拉框的值和文本select
    回调函数
    js判断浏览器
    JS获取活动区域高和宽
    判断身份证
    Linux驱动架构之pinctrl子系统分析(一)
    Android的开机启动流程
    Android中getprop命令的使用
    C运算符优先级和结合性
  • 原文地址:https://www.cnblogs.com/bass6/p/6165662.html
Copyright © 2020-2023  润新知