Java Mysql Emoji 配置
来源:互联网 发布:mac装微软雅黑字体 编辑:程序博客网 时间:2024/06/02 19:42
关键:把 Mysql 的字符集从 utf8 改为 utf8mb4 。
前提
utf8mb4 的最低 Mysql 版本支持版本为 5.5.3+,若不是,请升级到较新版本。
如果你用的是 java 服务器,升级或确保你的 mysql connector 版本高于 5.1.13,否则仍然无法使用 utf8mb4。
准备:查看当前版本及字符集
查看当前版本,Linux 命令:
# mysql -V
登录 Mysql 进入命令行模式:
# mysql -uroot -p你的密码
查看当前 Mysql 字符集设置:
msql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
步骤一:改 Mysql 配置文件 my.cnf
Windows 下配置文件是安装目录下的 my.ini。
Linux 下 Mysql 配置文件一般在:/etc/my.cnf。
字符配置改为:
[client]default-character-set = utf8mb4[mysql]default-character-set = utf8mb4[mysqld]character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_connect='SET NAMES utf8mb4'
步骤二:改已有的 database、table 和 column 字符集
msql> ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;msql> ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;msql> ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
其中的 database_name、table_name、column_name 要替换成你对应的数据库名、表名、列名。VARCHAR 的长度值也是。
步骤三:重启 Mysql 并检查更改后的字符集设置
Linux 下重启命令:
# service mysql restart
再次登陆 Mysql 并查看字符集设置:
msql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
此时结果应该如下:
+--------------------------+--------------------+| 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 || collation_connection | utf8mb4_unicode_ci || collation_database | utf8mb4_unicode_ci || collation_server | utf8mb4_unicode_ci |+--------------------------+--------------------+rows in set (0.00 sec)
个中含义,详见鸟哥博客:深入Mysql字符集设置
步骤四:关于 JDBC URL
jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=truejdbc.username=rootjdbc.password=password
autoReconnect 表示:当数据库连接异常中断时,是否自动重新连接?默认是 false。
有争议的地方:
- 有人说: characterEncoding=utf8 可以被自动被识别为 utf8mb4(当然也兼容原来的 utf8 )。
- 也有人说: connector 版本大于 5.1.13 的不能加 characterEncoding=utf8。
- 有人反馈说: 不加 characterEncoding=utf8 才会生效,但是不加会导致中文也变成问号。
- 总之有种配置是错误的: characterEncoding=utf8mb4 这样配置 JDBC 会识别不了导致出错。
- 我的情况是: Mysql version 5.6.21。jdbc.url 不加 characterEncoding=utf8。
步骤五:迷之不生效
看他人帖子,经过以上步骤,他们都能成功存储 emoji 了,但是我的就是不生效。数据库也重启了,emoji 存进去是???,查出来也是???。
后来又看到别人对数据源进行设置,然后我又改了我的 Druid 数据源配置,新加了一个配置:
<property name="connectionInitSqls" value="set names utf8mb4;"/>
至此,终于成功了!
参考文章
- mysql/Java服务端对emoji的支持
- 微信nickname乱码(emoji)及mysql编码格式设置(utf8mb4)解决的过程
- 深入Mysql字符集设置
0 0
- Java Mysql Emoji 配置
- mysql emoji 配置
- Java、mysql支持emoji表情
- EMoji表情 Java+Mysql 存储
- java处理emoji,导入mysql
- java处理emoji,导入mysql
- mysql/Java服务端对emoji的支持
- mysql/Java服务端对emoji的支持
- mysql/Java服务端对emoji的支持
- mysql/Java服务端对emoji的支持
- mysql/Java服务端对emoji的支持
- mysql/Java服务端对emoji的支持
- mysql/Java服务端对emoji的支持
- mysql保存emoji表情问题-java
- mysql/Java服务端对emoji的支持
- mysql/Java服务端对emoji的支持
- mysql/Java服务端对emoji的支持
- mysql/Java服务端对emoji的支持
- STL学习笔记之next_permutation(下一个排列)
- 110.Minimum Path Sum-最小路径和(容易题)
- JS实现面板拖动及兼容性处理方法
- Spring -- HelloWorld
- USB、UART、SPI、I2C、Ethernet、SD、SATA、PCI、 XGMII/XLGMII/CGMII总线的传输速度
- Java Mysql Emoji 配置
- 【OVS2.5.0源码分析】datapath之action分析(7)
- javac编译 编码GBK的不可映射字符
- activiti笔记
- Android 7.0分屏原理及生命周期
- c++学习笔记(2)字符串
- OJ算法
- linux 2.6下eeprom at24c08 i2c设备驱动(new style probe方式)
- margin属性