【MySql】JSP写入MySQL数据库乱码问题

JSP在写入数据库的时候有时会出现乱码问题,如下所示:

乱码的出现一般有两种原因:

一、    数据库编码选择不对

修改数据库编码以MySql数据库设置utf-8为例,MySql数据库的默认编码为latin修改数据库编码问题方法如下:

1.      在DOS命令行中输入SHOWVARIABLES LIKE 'character%';可以查看目前数据库的编码状态,由于笔者的编码信息已修改为utf-8,所以显示如下:

【MySql】JSP写入MySQL数据库乱码问题_第1张图片

2.      命令行设置编码命令:

a)  SETcharacter_set_client = utf8;

b)  SETcharacter_set_connection = utf8;

c)  SETcharacter_set_database = utf8;

d)  SETcharacter_set_results = utf8;

e)  SETcharacter_set_server = utf8;

f)  但这样设置只在当前会话状态中有效,重启MySql服务后会失效。

3.      另一种不会失效的方法是修改安装目录下的my.ini 文件,修改前要停止MySql服务,my.ini文件路径一般为\ Program Files\MySQL\MySQLServer 5.5。

a)  打开my.ini文件,在[client]、[mysql]、[mysqld]标记下分别添加default-character-set=utf8语句,但是注意这三个标记下如果有default-character-set编码设置只需修改值为utf8即可,不然MySql服务会启动失败。

b)  重启MySql服务。

c)  SHOW VARIABLES LIKE'character%';查询编码发现编码已更改。

4.      还有一种万能的方法是重装数据库软件,但是这种方式只适合数据库中没有数据的情况,而且卸载会面临着注册表清除问题,这个笔者将另外介绍。

二、    JSP编码选择不对

      有时候我们的数据库编码正确了,但是程序编码不正确还是会出现乱码问题。了解编码问题首先了解程序提交数据问题,数据提交如下图所示:


程序要保证提交的数据不是乱码,数据库的存储才不会出现乱码。控制乱码包括控制浏览编码、request/response对象的编码,数据库连接编码。这里只需确定request对象和数据库的连接编码即可。

1.  request对象编码

a)  在Servlet获取数据前加上request.setCharacterEncoding("utf-8");语句。

2.  数据库连接编码

a)  配置文件数据库访问路径可带参数dbUrl=jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf-8

经过上几次试验通常能解决数据库存储乱码问题。



Author:事始

Introduction:自由职业

Sign:只要你还在尝试,就不算失败。

 

 

 

 

 

 

你可能感兴趣的:(【MySql】JSP写入MySQL数据库乱码问题)