jsp存取mysql中文数据结果为乱码的解决方法

转载 2007年09月29日 16:43:00
 

开发环境是:XP-sp2,Tomcat5.0,jdk1.42,mysql4.0.21-nt

在玩jsp时发现,jsp把中文数据存入mysql或者从mysql读取出来显示的是乱码,无语,用百度搜了很多资料,解决问题。现总结一下。

解决方法一:

连接mysql时(无论在从mysql读还是取数据的情况),指定使用的编码方式为gb2312,具体代码如下

 

//装载mysql-jdbc驱动
Class.forName("com.mysql.jdbc.Driver").newInstance();
//连接数据库
Connection sqlCon = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test?user=root&password=1&useUnicode=true&characterEncoding=gb2312" );

解决方法二:

如果方法一不行那么在方法一的基础上对读入的字符串进行强制编码方式转换。

代码示例如下:

String name = rst.getString("name");
name= new String(name.getBytes("ISO-8859-1"),"gb2312");

注:代码也可以为:String name =new String( rst.getString("name").getBytes("ISO-8859-1"),"gb2312"));其中rst为返回的resultset,ISO-8859-1为mysql默认的编码方式,代码的目的是把以ISO-8859-1的编码转换为gb2312编码方式,这样强制转换,可以解决一部分问题,如果结合方法一,应该可以解决中文乱码问题。

解决方法三:

这个方法在有些文章里是首推的,我首先也是试了这个方法,但是好像不行。这里还是说一下,不知是不是我操作错误。还是先贴原文吧:
"如果数据库中有中文的话而mysql默认的语言不是中文时要在配置文件C:winntmy.ini 中的 [mysqld] 里添加一行:
default-character-set=gbk
然后重起mysql"(原文地址:http://www.blogdriver.com/blog/tb.b?diaryID=338894)

我的是xp系统,所以my.ini在C:WINDOWS下,用editplus打开,没有修改过的代码如下:
......
[mysqld]
basedir=E:/Program Files/mysql
#bind-address=192.168.0.150
......
[WinMySQLadmin]
Server=E:/Program Files/mysql/bin/mysqld-nt.exe
......
按照原文所说的,修改配置代码如下:
......
[mysqld]
basedir=E:/Program Files/mysql
default-character-set=gbk
#bind-address=192.168.0.150
......
[WinMySQLadmin]
Server=E:/Program Files/mysql/bin/mysqld-nt.exe
......

然后重启winmysqladmin.exe
如果没有方法一和二为基础的话,用这个方法我试过不行。有了方法一和二,即使不用方法三,我也解决了中文读写的乱码问题。

最后,别忘了在jsp中声明:
contentType="text/html;charset=gb2312"

jsp存取mysql中文数据结果为乱码的解决方法

网上有很多这方面的资料,但很多要么是零星的几句,要么是长篇大论从编码的概念开始说起,我不是搞理论的,给自己的要求是会用就行。废话不说,开始正题吧。我的开发环境是:XP-sp2,Tomcat5.0,jd...
  • johnsonTj
  • johnsonTj
  • 2005年04月24日 09:46
  • 2666

jsp页面写入中文到mysql时出现了乱码(转)

    今天自己在用jsp把中文写入mysql的时候出现乱码,从数据库中读取出来的时候也显示为“??”,感觉应该出现了编码转换过程中的字符信息丢失。然后在mysql中直接执行该命令,发现中文是正常的,...
  • jdhanhua
  • jdhanhua
  • 2010年11月14日 20:47
  • 9135

MySQL根据select语句导入导出数据(含解决中文乱码方式)

所有都亲测,不废话,上代码: 导出 select count(1) from table  into outfile '/tmp/test.xls' character set gbk; 导入...
  • Lorenzo_D
  • Lorenzo_D
  • 2016年06月29日 18:00
  • 1576

jsp页面往mysql里插入中文后数据库里显示乱码

1、JSP页面乱码 解决办法:在页面开始地方用下面代码指定字符集编码即可。 2、数据库乱码 这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码。 解决办法:在数据库连接字符串中加...
  • u011408270
  • u011408270
  • 2016年04月01日 14:56
  • 3098

jsp存取mysql中文数据结果为乱码的解决方法(未经验证)

网上有很多这方面的资料,但很多要么是零星的几句,要么是长篇大论从编码的概念开始说起,我不是搞理论的,给自己的要求是会用就行。废话不说,开始正题吧。我的开发环境是:XP-sp2,Tomcat5.0,jd...
  • sleepbird
  • sleepbird
  • 2007年04月11日 15:09
  • 824

Jmeter中Sampler响应结果乱码问题解决之道

先看现象,响应数据出现乱码。 问题分析: 当响应内容没有设定编码时,jmeter会按照jmeter.properties文件中设定的编码进行解码。默认的编码为ISO-8859-1,所以在解析中...
  • zhangchaoy
  • zhangchaoy
  • 2017年02月26日 12:29
  • 1460

MySQL命令行查询乱码解决方法:

MySQL 会出现中文乱码的原因不外乎下列几点: 1. server 本身设定问题,例如还停留在 latin1 2. table 的语系设定问题(包含 character 与 collatio...
  • x1207008324
  • x1207008324
  • 2017年02月10日 10:35
  • 716

解决jsp+MysQL输入和输出中文乱码的方法!

当使用JSP页面将中文数据添加到MySql数据库中的时候发现变为乱码,或者从mysql中读取中文的时候出现乱码,这些问题根源都是由于字符编码不一致造成的。要知道病源是什么我们才能对症下药,所以我将问题...
  • soleghost
  • soleghost
  • 2006年09月24日 15:01
  • 3112

jsp jdbc插入mysql的汉字乱码,全变问号

mysql数据库字符集设为默认; 下面解决好的代码,没乱码,我测试过的 String sContent = new String(request.getParameter("conte...
  • gjife
  • gjife
  • 2011年11月23日 20:38
  • 8405

mysql数据库插入中文乱码或问号--解决历程

今天在做一个项目的时候用到了数据库,需要将winform中的数据导入到数据库,一开始写的时候因为都是英文界面没有注意,等有一个需要导入的中文时问题来了!!出现了问号,郁闷,,好吧,既然问题来了项目时间...
  • u014605728
  • u014605728
  • 2016年04月07日 18:08
  • 969
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jsp存取mysql中文数据结果为乱码的解决方法
举报原因:
原因补充:

(最多只允许输入30个字)