java后台怎么保存IOS表情

大海 发布于 2016/06/23 17:05
阅读 954
收藏 1

java在后台接受到的表情,都是各种乱码,更不要说存入数据库了,在数据库响应表字段的编码改为utfmb4的情况下,有什么好办法?

插入数据库时提示

### Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for column 'CONTENT' at row 1
; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1366]; Incorrect string value: '\xF0\x9F\x98\x84' for column 'CONTENT' at row 1;

加载中
1
艾伦果果
艾伦果果

解决方案:将Mysql的编码从utf8转换成utf8mb4。

1. 修改my.ini [mysqld] character-set-server=utf8mb4
2. 在Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。
3. 将已经建好的表也转换成utf8mb4 
   命令:ALTER TABLE `TABLE_NAME` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; (将TABLE_NAME替换成你的表名)
4. 将需要使用emoji的字段设置类型为: 
   命令:ALTER TABLE `TABLE_NAME`MODIFY COLUMN `COLUMN_NAME`  text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
艾伦果果
艾伦果果
@拉娜亚 回复@拉娜亚 : 那地方多了,每个都要自己额外处理么?
拉娜亚
拉娜亚
回复 @ALAI丶 : 那不如自己处理了,使用开源的jar 转换
艾伦果果
艾伦果果
回复 @拉娜亚 : 没权限不会找人要咩?
拉娜亚
拉娜亚
如果没有数据库的管理权限这种方式就不太好了
xter
xter
回复 @大海 : 表情是四个字节的unicode编码,你后台控制台不支持这种编码,看起来就是乱码的咯。但是你改数据库字段或者表的编码为utf8mb4的话就能正确存储了。如果你还是要在后台看到它是什么样的话,用这个?https://github.com/vdurmont/emoji-java
下一页
0
绝望生鱼片
大海
大海
怎么转啊?
0
公孙二狗
公孙二狗

存入时 base64 编码,取出来后 base64 解码

公孙二狗
公孙二狗
回复 @大海 : 都在服务器端
大海
大海
客户端要不要做处理?是服务器接受以后直接base64么?
0
z_hlong
z_hlong
可以参考这个http://blog.itpub.net/26230597/viewspace-1243233/   按照这个设置之后,emoji表情可以存入到库中,库中显示的为问号,但是ios手机应该能正常显示
大海
大海
关键是后台接收到的表情就是乱码,这个再怎么存还是不对吧,总要先解决传到后台的数据的乱码问题
0
zzuqiang
zzuqiang
还是编码问题,需要耐心和坚持不懈找下去
大海
大海
是啊。。
0
拉娜亚
拉娜亚
<dependency>
  <groupId>com.vdurmont</groupId>
  <artifactId>emoji-java</artifactId>
  <version>3.1.3</version>
</dependency>




试试这个

0
JianF
JianF
Base64 处理
返回顶部
顶部