java web项目中文字符集UTF-8在插入数据库MySQL时中文乱码

在学习java web项目过程中,从页面输入的中文文字插入到MySQL数据库中总是乱码。

在web.xml里面也设置了字符集的过滤,依然没有用。

 <filter>
      <filter-name>encodingFilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
      </init-param>
 </filter>

 <filter-mapping>
      <filter-name>encodingFilter</filter-name>
     <url-pattern>/*</url-pattern>
 </filter-mapping>

用Debug模式查看,在页面输入到java后台过程,中文没有乱码,是在插入数据库的时候中文乱码,查看数据库的字符集设置

show variables like 'character%';

发现character_set_server的字符集是latin1

使用命令

set character_set_database=utf8;
set character_set_server=utf8;

更改数据库字符集后,重新插入数据还是乱码。

在终端用命令行的模式登陆mysql数据库后,
mysql -uxxxx -pxxxx
查看数据库字符集,发现如下信息
mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.23, for macos10.13 (x86_64) using  EditLine wrapper

Connection id:        44
Current database:    
Current user:        root@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        5.7.23 MySQL Community Server (GPL)
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1

Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /tmp/mysql.sock
Uptime:            14 hours 20 min 38 sec

于是从网上查了一些方法,在目录/etc下创建文件/etc/my.cnf

[mysqld]

character-set-server=utf8

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

重启mysql服务,

bash-3.2$ sudo /usr/local/mysql/support-files/mysql.server restart
Starting MySQL
. SUCCESS! 

再次查看字符集,已经更改过来。 数据库插入中文乱码问题就搞定了。

在重启mysql过程中,遇到了另外一个问题,用kill -9杀死进程后,mysql一直自动重启,使用命令
sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
完美解决,使用命令前需要确认该路径下的文件名称是否一致.

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值