mysql中存储带特殊符号的微信昵称

问题:
微信昵称中有表情符号,在获取到微信个人信息保存到mysql时,格式不支持导致保存失败。
现象:


微信昵称带表情

错误:

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8C\xB2\xE6\x97...' for column 'nick_name' at row 1
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[alk-wxapi.jar:na]
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[alk-wxapi.jar:na]
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[alk-wxapi.jar:na]
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:975) ~[alk-wxapi.jar:na]
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1114) ~[alk-wxapi.jar:na]
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchSerially(ClientPreparedStatement.java:854) ~[alk-wxapi.jar:na]
        ... 82 common frames omitted

解决思路:
1、修改mysql的配置,不外乎server端,客户端,DB
2、数据库存base64,base64连图片都能搞,一个表清应该是ok的,只不过需要存储的时候encode,拿出来再decode

解决方案:
果断采用第一种啊,并实践证明,是科学+合理+快捷的方式。
修改mysql的配置,配置文件位置各不相同,不再累赘。

image.png

修改点就一个,mysqld上加个character-set-server = utf8mb4,就这一个而已。

然后修改数据库、这个表、这个字段的字符集类型为utf8mb4,ok了。

验证:


字段设置
存储

第二种方式也称应用层解决方案

base64可以用java.util.Base64,也可以用apache提供的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容