使用jdbc查询防止出现中文乱码的方法

时间:2022-07-01 20:24:33

在使用mysql创建数据库及表格,在navicat中可以正常查询出中文,但使用jdbc查询的结果中,中文为乱码。

网上查到资料,为了能够彻底一劳永逸的解决这个问题,需要修改mysql下配置文件my.in

打开cmd  使用   mysql -uroot -p   登录mysql之后,使用这条语句查询数据库编码 show variables like '%char%';

查询结果编码有的为lan1编码 有的是utf8编码

网上一些修改方法 是在这三个位置添加相关语句

使用jdbc查询防止出现中文乱码的方法

经实验还是有中文乱码出现

再次使用show variables like '%char%';  查询,发现字符编码变为utf8 但是连接编码set_character_connection和其他几个还是lan1编码

后来在my.in中[mysqld]标签最下面发现这样一段

## UTF 8 Settings
#init_connect=\'SET NAMES utf8\'
#collation_server=utf8_unicode_ci
#character_set_server=utf8
#skip-character-set-client-handshake
#character_sets-dir="D:/xampp/mysql/share/charsets"

前面的井号#表示这是一段被注释掉的代码  猜测是用来设置utf8编码的

而且character_set_server=utf8这一句与网上方法相同,但网上方法并没有完全改变所有编码格式

去掉这段代码前面井号如下:

## UTF 8 Settings
init_connect=\'SET NAMES utf8\'
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
character_sets-dir="D:/xampp/mysql/share/charsets"

使用show variables like '%char%'; 结果如下:

使用jdbc查询防止出现中文乱码的方法

重新创建数据库和表,jdbc查询测试,中文正确显示。

此外应当注意,jdbc的url后面应当指明编码格式 如下:

jdbc:mysql://localhost:3306/(这里写数据库名,不加括号)?useUnicode=true&characterEncoding=UTF-8。