MySQL-存储表情字符

MySQL-存储表情字符?

1.emoji

emoji 是一种特殊的 Unicode 编码

2.utf8

utf8是unicode的实现方式之一

mysqlutf8utf8mb3的别称

utf8中,一个字符使用1-3个字节表示,中文3个字节

3.utf8mb4

同utf8一样,也是unicode的实现方式之一

不同于utf8,utf8mb4使用1-4字节表示字符

表情字符是4个字节,所以,mysql中需要使用该编码方式

4.问题产生:数据库和表的编码方式都是utf8mb4,但是插入的数据显示全是????
4.1创建的数据库和创建的表的编码都是utf8mb4,但是通过代码插入的数据显示都是???.
 Class<?> aClass = Class.forName("com.mysql.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf8mb4", "root", "root");
            PreparedStatement preparedStatement = connection.prepareStatement("insert into chat_log(user_id,emoji) " +
                    "value(1,?)");
            preparedStatement.setString(1,"???");

            preparedStatement.execute();
4.2复制,直接黏贴表情符到数据库中,显示正确(mysql工具,navicate pre)
4.3问题原因

问题还是处在mysql的字符集上

使用命令show variables where variable_name like 'character_set_%'; (我已经修改过)

+--------------------------+-----------------------------------------------------------+
| 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.25-macos10.14-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+
8 rows in set (0.00 sec)

应当保证此处的编码方式如上图.

4.5 如何设置编码方式
  • 通过命令行:set character_set_client=utf8mb4,只是临时修改
  • 通过修改my.cnf(mac环境,win应该是:my.ini)文件,永久修改

修改my.cnf文件

mac命令

sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

sudo vi /etc/my.cnf

在该文件中加入

[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

保存退出

此时再查看字符集,就已经和上面的相同了

修改完成.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值