my.ini位置:C:ProgramDataMySQLMySQL Server 5.7my.ini
my.ini116行附近添加(或者在[mysqld]后面任意位置,比如最后一行):character-set-server=utf8
然后重启mysql
问题现象:
这个问题我查了2天,找到的答案很多,我的问题分为两个:
第一个是通过mybatis插入的中文,mybatis查询出来显示为问号?;
第二个是,通过mybatis插入查询中文正常后,通过navicat看是问号?;
还有一个隐藏的问题是通过mybatis插入的中文,mybatis查询出来是乱码,我无法复现。
第一个问题的解决方法是修改C:ProgramDataMySQLMySQL Server 5.7my.ini中的character-set-server=utf8,# The default character set that will be used when a new schema or table is # created and no character set is defined # character-set-server=
解释下,character_set_server 是默认的内部 *** 作字符集
Mysql字符集设置 - Johney - 博客园
关于MySQL中的8个 character_set 变量说明_小异常的博客-CSDN博客_character_set_system
这是修改前后使用SHOW VARIABLES LIKE 'character%';命令,在dos命令行下查询字符集设置结果的对比:
修改前:注释掉character-set-server=,
mysql> show variables like 'charac%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | C:Program FilesMySQLMySQL Server 5.7sharecharsets | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.00 sec)
修改后:添加character-set-server=utf8并重启mysql服务
mysql> show variables like 'charac%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | gbk | | character_set_connection | gbk | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | gbk | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:Program FilesMySQLMySQL Server 5.7sharecharsets | +--------------------------+---------------------------------------------------------+ 8 rows in set, 1 warning (0.00 sec)
第二个问题是因为navicat设置有误,我的navicat版本是15.0.12
解决方法是编辑连接
打卡高级选项卡,将编码改为自动(注意这里与较早的navicat版本不同,老版navicat是在连接属性中勾选使用MYSQL字符集)
关于Navicat和MYSQL字符集不统一出现的中文乱码问题_fenfei12138的博客-CSDN博客_navicat乱码中文
navicat显示中文为问号_mawei7510的博客-CSDN博客_navicat显示中文是问号
隐藏的问题可能是客户端、连接、结果的字符集设置有误,如果有复现这个问题的,请提醒我补充下。– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
通过命令行插入中文,然后用select语句查询,在命令行下查询显示为乱码,在navicat工具下显示为???
检查数据库、表字符集设置,均为utf8
mysql> show variables like 'character_set_%'; +--------------------------+---------------------------------------------------------+ | Variable_name | Value | +--------------------------+---------------------------------------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | C:Program FilesMySQLMySQL Server 5.7sharecharsets | +--------------------------+---------------------------------------------------------+ 8 rows in set (0.05 sec)
mybatis配置中设置unicode和charset可有可无:
按照mybatis教程应该设置为:
实际设置可以删除:useUnicode=true&characterEncoding=UTF-8,只保留如下: url=jdbc:mysql://localhost:3306/mybatis2?useSSL=false
mybatis自动/默认使用Unicode和utf-8
有参考价值的文章:
Mysql字符集设置 - Johney - 博客园
关于MySQL中的8个 character_set 变量说明_小异常的博客-CSDN博客_character_set_system
这两篇文章写的是基本概念。如果看了大量的博客还是感觉很糊涂,应先理清下概念。
MyBatis *** 作MySQL中文乱码问题_qdzeac的专栏-CSDN博客_mybatis查询中文乱码
从这篇文章了解到每个字段可以单独设置字符集。
CREATE TABLE `buyerUser` ( `U_buyer` int(11) NOT NULL AUTO_INCREMENT, `Ub_poptype` int(11) DEFAULT NULL, `Ub_popularrize` varchar(20) CHARACTER SET latin1 DEFAULT NULL, ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULTCHARSET=utf8 PACK_KEYS=0 CHECKSUM=1;
关于Navicat和MYSQL字符集不统一出现的中文乱码问题_fenfei12138的博客-CSDN博客_navicat乱码中文d
“②保证MySQL字符集配置正确的前提下,在navicat的连接属性中勾选使用MYSQL字符集。”有参考价值
mysql 修改字符集 - 大大的橙子 - 博客园
mysql修改字符集 - EasilyAi - 博客园
修改查看MYSQL字符集(charset) - 清清飞扬 - 博客园
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)