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

news/2024/5/19 2:10:07 标签: MySQL, JSP, XP, 百度, JDBC

网上有很多这方面的资料,但很多要么是零星的几句,要么是长篇大论从编码的概念开始说起,我不是搞理论的,给自己的要求是会用就行。废话不说,开始正题吧。

我的开发环境是: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"



http://www.niftyadmin.cn/n/605325.html

相关文章

phpMyAdmin 4.0.3-rc1 发布

phpMyAdmin 4.0.3 RC1 发布了,这是一个 bugfix 版本,包含一个很小的安全漏洞修复。 phpMyAdmin是一个非常受欢迎的基于web的MySQL数据库管理工具。它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增字段,执行SQL脚本等。…

python 多进程简单复习(apply方法及appply_async)

Pool进程池 multiprocessing中有两个Pool类 1. multiprocessing.Pool (进程池) 2. multiprocessinf.dummy.Pool&#xff08;伪进程池<线程池>&#xff09;python 在多进程执行中存在一个python解释器的历史遗留问题 即GIL锁导致python解释器运行多进程任务时 有且只有一…

分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)

同学在做jsp实现一个网上交易平台时一碰到了这个问题&#xff0c;我想这个问题一定具有代表性&#xff0c;因为分页显示技术要用到的地方确实很多。为了减少初学者在这方面花的时间&#xff0c;我在一些资料的基础上&#xff0c;总结了分页显示的方法。 方法一&#xff1a;最常…

职场十年经验和能力无关

我一直在想&#xff0c;为什么看到很多的人在外边闯荡十几年&#xff0c;为什么还是一个普通的员工&#xff0c;没有高薪&#xff0c;只有高龄&#xff0c;经验和资历固然重要&#xff0c;但这并不是衡量经验和才华的标准。有些人十年的经验&#xff0c;只不过是一年经验的重复…

auto_setup接口 connect_device | init_device

auto_setup是一个用来初始化环境的接口&#xff0c;它接受5个参数。我们可以设置当前脚本所在路径&#xff0c;指定运行脚本设备、设置默认的log路径、设置脚本父路径和指定截图精度 auto_setup(basedirNone,devicesNone,logdirNone,project_rootNone,compress0) 自动配置运行…

部署cmp时的教训

原来数据库服务器随系统启动而启动&#xff0c;前几天把数据库服务改为手动启动后一直没有部署过cmp&#xff0c;直到昨晚做cmp作业时&#xff0c;部署cmp jboss就报出n多错误&#xff0c;眼花缭乱啊。还没等报完错误&#xff0c;我就关了jboss&#xff0c;心想怎么会这样的呢&…

关于Remoting

这几天看了不少Remoting文章。明白了不少技术细节&#xff0c;但困惑也不少。简单说来&#xff0c;Remoting是一个分布式处理服务。服务器端首先创建通道&#xff08;Channel&#xff09;&#xff0c;并自动开启监听通道。根据客户端发出的请求&#xff0c;传递远程对象。 因此…

语法技巧(三目运算符、switch...case...)

一、三目运算符 三目运算符的一种简便写法&#xff1a; bool b str "abc" ? false : true; 当是自身时&#xff0c;实际上别吝啬那一个括号&#xff0c;有一个括号&#xff0c;实际上更容易一看就看懂&#xff1a; int i 0;i (i 0) ? 1 : 0; 实际上这样的代码…