jfinal emoji 表情存储

 在数据库通过直接写sql  已经可以实现存储  微信表情,image.png

排除数据库存储问题!但在jfinal的bean 对象 的.save()方法  存储该名称(带表情)时 依然出现 报错  .我的mysql-connector-java  5.1.44,且数据库编码都是utf8mb4   在后台打印可以显示出名称(带表情),排除前段写入时候表情error.推断是 java  跟mysql  连接时候字符集造成的问题  .请问哪里可以配置 这个编码格式.如果判断不对!那么应该怎么处理!才能吧微信表情存储进去? 


评论区

JFinal

2018-10-26 12:07

jdbcUrl 里头可以指定一下编码为 utf8mb4

xhcjz

2018-11-10 18:55

提示不支持 Caused by: com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: Unsupported character encoding 'utf8mb4'.

xhcjz

2018-11-26 14:23

jdbc.url = jdbc:mysql://localhost:3306/chedata?characterEncoding=utf8 这里并没有utf8mb4 这种啊

jerry1216m3

2019-01-07 19:08

請問有解決了嗎?我也碰到一樣的問題

JFinal

2019-01-07 23:41

@jerry1216m3 首先数据库存放的字段要设置成 utf8mb4,这个是大前提

jerry1216m3

2019-01-08 09:26

@JFinal 我已經把DB全設utf8mb4了 my.cnf也都改了 mysql-connector-java也換最新的8.0.13 insert進去還是都會變?

JFinal

2019-01-08 11:19

@jerry1216m3 mysql 字符集有三个级别,分别是:字段级、表级、数据库级

优先级从高到低是:字段级、表级、数据库级

基于上面的两条,当字段级没有指定字符集时,以表级为准,当表级没有指定时,以数据库级为准

因此,你要根据上述几条规则去查看并且调整

最佳实践是:
1:创建数据库时指定字符集,例如:
CREATE DATABASE my_db DEFAULT CHARSET utf8mb4;

2:后续建表、建字段时无需再指定字符集,因为前面的 create database 已经指定

3:jdbcUrl 中指定 characterEncoding=utf8mb4


综上所述,如果你创建数据库时没有指定字符集,那么你建这个库的时候很可能就不是 utf8mb4,那么后续建表、建字段时就必须要去指定utf8mb4,否则工作不正常

jerry1216m3

2019-01-08 14:46

@JFinal 基本上你說的部分我都設定了 3.的部分url是無法直接指定characterEncoding=utf8mb4 但還是insert後變?

JFinal

2019-01-08 15:08

@jerry1216m3 这个问题本质是数据库的事,jfinal 能做的也就在 jdbcUrl 这个层面了配置字符集了

characterEncoding=utf8mb4 这个配置是指定 JDBC 与数据库协商使用 utf8mb4

xhcjz

2019-01-10 14:59

@jerry1216m3 没有!我先用替换的顶替了.但是不是我们想要的完美结果

xhcjz

2019-01-10 15:00

@jerry1216m3 你如果解决,方便的话请留言共享!谢谢

jerry1216m3

2019-01-11 11:01

@xhcjz 我也還沒解,網上的方法我幾乎都試過 設定也照改了 但還是沒用 insert emoji後還是會變?

jerry1216m3

2019-01-11 16:43

我有試出來了 原來是我的phpmyadmin版本太低所以看到會是?其實已經insert成功了 你的mysql要改my.cnf 版本要5.6.x以上的 java connector也要5.1.3x以上的

热门反馈

扫码入社