数据插入数据库出现中文乱码问题

一、开发环境

Java语言、开发平台eclipse、数据库MySQL

二、问题描述

在Java开发时,写了两个页面:登录页面、注册页面。通过注册可以把数据插入数据库中,通过登录可以查询数据库中的数据,成功则进入首页,失败则不能进入。登录、注册都是通过form表单,采用Post方式提交的。

1-1 但是在注册页面输入中文名注册时,发现数据库中显示的姓名是乱码;

2-1 或者注册成功,数据库中不是乱码,但是登录的时候输入中文名却登录不成功。

三、问题显示

 1-1、进入注册页面,输入中文名“张三”,点击“提交”

数据插入数据库出现中文乱码问题
注册_乱码

        

1-2、查看数据库,发现提交的“张三”显示乱码

数据插入数据库出现中文乱码问题
数据库_乱码

2-1、登录用户名“张三峰”,账号密码正确,但登录不了

数据插入数据库出现中文乱码问题
登录_乱码

四、解决办法

1 数据库中中文名出现乱码,首先考虑是数据库这边的问题,还是在提交到数据库的时候就是乱码。

1-1 在执行sql语句的那一行打个断点(双击行号左边打断点)

数据插入数据库出现中文乱码问题
在执行sql语句的地方打断点

1-2 以Debug方式重启服务器,以识别断点

数据插入数据库出现中文乱码问题
Debug方式运行服务器

1-3 当执行断点所在的方法时拦截代码,再次注册用户提交

数据插入数据库出现中文乱码问题
再次注册_乱码

1-4 拦截代码,进入Debug模式

数据插入数据库出现中文乱码问题
选择“Switch”进入Debug模式

1-5 查看各插入数据的值,可以发现在进数据库之前,用户名name就是乱码,所以问题出现在在服务器这边

      注意:如果这里用户名name不是乱码,但数据库里是乱码,则可能是创建数据库时,数据库的编码没有设置成功,不是UTF-8,则重新设置一下数据库的编码即可。

数据插入数据库出现中文乱码问题
Debug模式全览
数据插入数据库出现中文乱码问题
把鼠标放上去,查看数据的值

1-6 关掉服务器,移除断点,返回Java视图

数据插入数据库出现中文乱码问题
关掉服务器
数据插入数据库出现中文乱码问题
移除断点
数据插入数据库出现中文乱码问题
返回Java视图

1-7 往前找问题,一般在Java文件的传输过程中不会出现乱码,所以可能是从前端去取值的时候出现了乱码

      经检查,注册时通过过form表单,采用Post方式提交的,而Post提交方式需要自己手动设置字符编码UTF-8。

数据插入数据库出现中文乱码问题
Post方式提交
数据插入数据库出现中文乱码问题
注册-手动设置字符编码UTF-8

 

             // 设置字符编码:一定要设在第一行!
             request.setCharacterEncoding("UTF-8"); 

      注意:手动设置字符编码UTF-8一定要设置在第一行,取完值之后再设置就没有意义了!

1-8 重启服务器,注意检查控制台是否报错

 

数据插入数据库出现中文乱码问题
重启服务器
数据插入数据库出现中文乱码问题
检查控制台是否报错

1-9 刷新页面重新注册,查看数据库,中文显示正确

数据插入数据库出现中文乱码问题
重新注册
数据插入数据库出现中文乱码问题
查看数据库

2-1 在登录中文名的时候,取值的前也要设置字符编码,否则也是乱码,登录不成功

数据插入数据库出现中文乱码问题
登录-手动设置字符编码UTF-8

 2-2 重启服务器,中文名登录成功!

数据插入数据库出现中文乱码问题
重启服务器

 

数据插入数据库出现中文乱码问题
中文名登录成功

 

 

相关文章: