在数据库中存储中文出现问题情况:
当出现这个种情况时:
结果在数据库中变成这样:
而在控制台输出时又变成中文

注意:
写的properties文件里面:
url=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
中的characterEncoding=utf8
与数据库里的编码不同(一种是与创建的数据库的编码格式不同,另一种是与创建的数据库表的编码格式不同)。一般情况是没有提前设定好数据库的编码时会自动默认数据库的编码格式这种情况会出现第一种情况所以在创建数据库的时候就直接设定好数据库的编码格式,
在不确定是数据库的编码问题还是数据表的编码问题时需在数据库中输入:
show variables like 'character_set_database';
查看数据库的编码格式
很明显编码格式不一致,那么接下来就是修改数据库的编码格式了:
alter database tedu_ums character set utf8;

然后再查看数据表的的编码格式
show create table t_user;

当Java代码、数据库、数据表三者的编码格式相同时就好了
本文介绍了在Java操作数据库时遇到中文乱码问题的现象,即数据库中显示为问号,但控制台输出正常。问题关键在于`properties`文件中`characterEncoding=utf8`设置与数据库实际编码不符。解决方案包括在创建数据库时指定编码格式,或检查并调整数据库和数据表的编码以匹配Java代码中的设置。通过查询数据库和数据表的编码,确保三者一致,即可解决乱码问题。
3466

被折叠的 条评论
为什么被折叠?



