在使用mysql创建数据库及表格,在navicat中可以正常查询出中文,但使用jdbc查询的结果中,中文为乱码。
网上查到资料,为了能够彻底一劳永逸的解决这个问题,需要修改mysql下配置文件my.in
打开cmd 使用 mysql -uroot -p 登录mysql之后,使用这条语句查询数据库编码 show variables like '%char%';
查询结果编码有的为lan1编码 有的是utf8编码
网上一些修改方法 是在这三个位置添加相关语句
经实验还是有中文乱码出现
再次使用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的url后面应当指明编码格式 如下:
jdbc:mysql://localhost:3306/(这里写数据库名,不加括号)?useUnicode=true&characterEncoding=UTF-8。