使用软件版本
jdk-8u171-windows-x64
ideaIU-2021.1.3
mysql-essential-5.0.87-win32
navicat8_mysql_cs
这个问题我调试了好久,网上的方法基本上都试过了,终于是解决了。
三个地方结果都不一样。
方法一
首先大家可以尝试下面这种方法:
如何解决mysql表输入中文出现问号的问题_Mysql_脚本之家 (jb51.net)https://www.jb51.net/database/314758xzq.htm
方法二
但是我这里还是没有解决,然后尝试下面这种方法
IDEA 与 Navicat 互相中文乱码(数据库、IDEA设置都是 UTF-8)_在idea表单中提交数据navicat显示乱码-CSDN博客https://blog.csdn.net/qq_44111597/article/details/113499720
IDEA中连接MySQL数据库查看表信息时可能出现中文乱码问题的终极解决方案 - 烤盐咸鱼 - 博客园 (cnblogs.com)https://www.cnblogs.com/A-Lynn/articles/17260096.html
网上基本上就是这种了,然后将mysql设置成utf8后,插入中文都显示失败了,但是在navicat和idea插入并没有问题,就是会显示乱码。
方法三
最全idea java连接mysql数据库中文乱码解决方案_为什么mysql的数据库导入idea是乱码-CSDN博客https://blog.csdn.net/xukaiqiang123/article/details/108802118还是修改配置文件,修改idea的配置文件后,还是会乱码,但是可以解决tocat控制台乱码的问题。
我的解决
总结上述就是对于idea,修改file Encodings里面的编码,全部换成utf-8,对配置文件进行新增-Dfile.encoding=UTF-8。
对于mysql的就是修改配置文件my.ini,对于navicat就是修改连接属性,如果上诉全部都试过了,无法解决,可以试一下我的方法。
ERROR 1366 (HY000):Incorrect string value解决方案_error 1366 (hy000): incorrect string value-CSDN博客https://blog.csdn.net/word_joke/article/details/84035375我最开始是可以在命令行直接用mysql插入中文,就是设置了编码把全部的latin1换成了utf8,结果中文也插入不了了,然后上课老师显示在navicat里面插入中文,然后用idea读取数据并不会乱码,这个是因为我第一次打开navicat的时候显示乱码的时候修改了navicat的属性,然后导致现在修改navicat中的乱码文中文,idea也不会显示中文,因为忘记了之前怎么设置了,所以我直接卸载,然后重新安装了navicat软件,现在显示navicat和mysql之间是乱码的,但是和idea之间是正常的了。
现在发现是勾选“使用MySQL字符集”,idea和navicat就同步了。
对于mysql和navicat的同步,我是根据报错信息来解决的,将编码修改成gbk格式。
首先要设置my.ini文件的权限,没有权限的话,下次登录又是乱码的情况。
如果没有修改过字符集结果编码格式应该是:
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 147
Server version: 5.0.87-community-nt MySQL Community Edition (GPL)Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> set character_set_client='gbk';
Query OK, 0 rows affected (0.00 sec)mysql> set character_set_connection='gbk';
Query OK, 0 rows affected (0.00 sec)mysql> set character_set_results='gbk';
Query OK, 0 rows affected (0.00 sec)mysql> set character_set_server='gbk';
Query OK, 0 rows affected (0.00 sec)mysql> set character_set_database='gbk';
Query OK, 0 rows affected (0.00 sec)mysql> show variables like 'char%';
+--------------------------+---------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files (x86)\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+---------------------------------------------------------------+
8 rows in set (0.00 sec)
set character_set_client='gbk';set character_set_connection='gbk';set character_set_results='gbk';set character_set_server='gbk';set character_set_database='gbk';show variables like 'char%';
发现最后一行是所有都是乱码的,重新插入一行数据测试一下。
发现就莫名其妙解决了,但是mysql采用的是gbk编码,在浏览器显示会不会出现乱码,这里打开tocat看一下,发现也没有问题。
那这到这里结束了,如果用前面的方法可以解决就用前面的方法,因为我也不知道按照我的修改后面会发生上面问题,只要是我看到网上写的都大差不差,但是都不能解决我出现的问题,所以只能自己摸索出一种解决方法。