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

原创 2005年04月24日 09:46: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 表单输入,UTF编码,get方式提交数据出现中文乱码解决方法

开门见山直接点题 问题描述: JSP页面,表单输入中文,查询MySQL数据库内"歌曲"信息,检索结果为空。字符编码为UTF-8格式,服务器为tomcat 7,0 同时在控...

中文乱码--MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总

MySQL5.0中文问题解决方案如下:    1、在dos环境下,用mysql --default-character-set=gbk -hlocalhost-u root -p 这句话进入mysql...

Linux编程向Mysql插入中文数据显示乱码的解决方法

最近写了个C++程序,其中有用到向Mysql中插入中文数据, 结果却出现乱码,经过上网查询资料和本人试验,终于解决了这个问题,现把方法说明如下: 首先说明Mysql中的字符集和校对规则。字符集是用来...

mysql插入中文数据乱码的解决方法(原创)

mysql插入中文数据乱码的解决方法(原创),今天向mysql数据库插入中文字段时变成了??????,研究若干文章后得到了解决,特此分享。...
  • kelay06
  • kelay06
  • 2017年03月13日 17:22
  • 143

JSP中文乱码解决方法

  • 2012年03月31日 19:58
  • 35KB
  • 下载

jsp、servlet中文乱码终极解决方法

jsp中文乱码终极解决方法 一 找出问题的根源    乱码可能出现的地方:1 jsp页面中                         2 jsp页面之间相互传参的参数        ...

JSP中文乱码问题最优解决方法

  • 2008年03月09日 20:46
  • 3KB
  • 下载

mysql中文乱码的解决方法

  • 2016年11月17日 00:38
  • 317KB
  • 下载

jsp 页面传值 到后台 中文乱码解决方法

例jsp中传入的参数名字:shortname 情况(1):和方法2针对的情况一样 如果是第3种情况的话就不适用了                      java后台代码这样处理   String ...
  • zygzzp
  • zygzzp
  • 2014年04月02日 14:58
  • 3144
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jsp存取mysql中文数据结果为乱码的解决方法
举报原因:
原因补充:

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