Mac os mysql数据库中文乱码解决

Mac os mysql数据库中文乱码解决

问题描述:

在使用jdbc、mybatis等框架时,往数据库插入数据后,用Navicat等工具查看发现,原来的中文变成了乱码。

1. 问题如下
        sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactoryInstance();
        userInfo = new UserInfo();
        userInfo.setUid(UUID.randomUUID().toString());
        userInfo.setUsername("dada's mt");
        userInfo.setPassword("12345678");
        userInfo.setSex(0);
        userInfo.setNickname("哒哒");
        userInfo.setEmail("dada@163.com");
        userInfo.setBirthday(new Date());
        userInfo.setType(0);

userInfo.setNickname(“哒哒”);这里设置的中文字符,数据软件查看却是??
在这里插入图片描述

2. 原因:

使用如下语句,查询数据库编码
show variables like ‘%char%’;
可以看到如下结果:
character_set_server 是latin1而不是utf8
在这里插入图片描述

3. 解决:
  • 1)数据库连接url加上characterEncoding=UTF-8,如:url: jdbc:mysql://127.0.0.1:3306/spring_boot?useUnicode=true&amp&characterEncoding=UTF-8
  • 2)修改配置文件,找到一份mysql的配置文件(一般在/usr/local/mysql/support-files/目录下,新版的mysql可能没有了),命名为my.cnf,放到/etc下, 在文件标签[mysqld]下加上character-set-server=utf8 如下:
    注意:my.cnf不要赋777权限,my.cnf是wirtale的话会被mysql忽略(755是可以的)
[client]
default-character-set=utf8
port        = 3306
socket      = /tmp/mysql.sock
[mysqld]
default-storage-engine=INNODB
#设置mysql server编码为utf8
character-set-server=utf8
collation-server=utf8_general_ci
port        = 3306
socket      = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
server-id   = 1
pid-file = /usr/local/mysql/data/mysql.pid
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
[mysqlhotcopy]
interactive-timeout

重启mysql服务,执行show variables like ‘%char%’,如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值