jsp存取mysql中文数据结果为乱码的解决方法
2007-09-29 16:43
786 查看
开发环境是: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时发现,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中文数据结果为乱码的解决方法
- jsp存取mysql中文数据结果为乱码的解决方法(转自自己以前的blog)
- jsp存取mysql中文数据结果为乱码的解决方法(未经验证)
- jsp + mysql 存取数据乱码的解决方法
- JSP MySQL插入数据时出现中文乱码问题的解决方法
- JSP MySQL插入数据时出现中文乱码问题的解决方法
- php读取mysql中文数据出现乱码的解决方法
- mysql导入导出数据中文乱码解决方法小结
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- php读取mysql中文数据出现乱码的解决方法
- 解决jsp+MysQL输入和输出中文乱码的方法!
- 解决Java Web开发中Jsp存储读取MySQL数据中文乱码的问题
- mysql中插入表数据中文乱码问题的解决方法
- 中文乱码--MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总
- MySQL插入数据时,中文乱码问题解决方法
- C# mysql 插入数据,中文乱码的解决方法
- JSP之 MySQL 插入数据时,中文乱码问题的解决
- MySql中表单输入数据出现中文乱码的解决方法
- cmd中MySQL中文数据乱码问题解决方法
- Linux编程向Mysql插入中文数据显示乱码的解决方法