| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1839 人关注过本帖
标题:[转载]MYSQL与JSP交互过程中的乱码解决方法
只看楼主 加入收藏
snowingsky
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-8-31
收藏
 问题点数:0 回复次数:2 
[转载]MYSQL与JSP交互过程中的乱码解决方法

vNVew3HL.rar (7.84 KB) [转载]MYSQL与JSP交互过程中的乱码解决方法



自己的以前配置环境时也是经历了乱码的痛苦,改了好多地方,在网上发现了高人总结的现成方法和大家分享一下。
[转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载][转载]
《JSP数据库开发实例精粹》一书问世以来, 接到许多读者求救, 其中有80%以上的问题是关于配置以及乱码问题,配置问题只要根据书中视频依次安装J2SDK, Tomcat, MySQL(Server+Client),一般都可以解决,但乱码问题让许多读者苦不堪言,现针对乱码问题解决如下,相信一定可以将仍困惑在乱码问题中的读者解救出来。

【声明】:本文仅对本文所采用的软件环境负责,如果你采用的是其他软件环境,只好自己触类旁通了。
【版本】:V1.0,最后更新于2005-8-3,请大家认准版本与时间,如果你是在几年后看到此文,请不要歉弃老土。^_^

-----------------------------------------------------------------------
【软件环境】:
OS: Windows 2000 SP4, Windows XP SP2,
JDK:j2sdk-1_4_2_08-windows-i586-p.exe,
Tomcat: jakarta-tomcat-5.0.28.exe,
MySQL: mysql-5.0.10a-beta-win32.zip;

--------------------------------------------------------------------

【写在前面的说明】 (必读):
1>本文将消除乱码分为三步:
>消除页面乱码,
>消除从MySQL中读出中文乱码,
>消除插入MySQL数据库中的中文乱码;

2>没有测试tomcat-5.5. + jdk5,但我想应该更容易些吧;

3>先安装J2SDK,后装Tomcat,如果J2SDK安装在c:\j2sdk1.4.2_08,它同时会在C:\Program Files\Java\Jre下安装一个public的Jre,在安装Tomcat时,一定要将JDK指向C:\j2sdk1.4.2_08,否则无法编译JSP;

4>注意采用本方法后,操作数据库时的相关中文数据无需做额外的字符转换处理,即在所有的字符处理过程中,都以GB2312或GBK来处理;

5>随本文发行的有两个纯JSP文件和一个SQL脚本,testCh***t.jsp用来测试“消除纯JSP和HTML页面中的乱码”,tstMySQL.jsp用来测试“消除从MySQL中读出中文的乱码”,均无需手工编译,放在任一个Web目录下即可使用。bookshop.sql为tstMySQL.jsp中用到的数据库,也为《隽隽在线书店》中的更新数据库;

6>在2k中比在XP中看到乱码的情况多一些,表现为在2K中meta标记不起作用,只能使用page指令,具体原因不太清楚,还望赐教。

7>关于MySQL的客户端功具,个人习惯使用MySQL CC,虽然它已不受支持,但本书中全部脚本(使用My SQL数据库的案例)都可以在MySQL CC中正常运行,有些在mysql-query-browser-1.1.13-win.msi出错;

8>从MySQL中读出的乱码,如果用MySQL 客户端显示正常而在网页中乱码,在确定数据库连接串中的字符集正确的情况下,把WEB-INF/classes/下,不是你创建的库删除。例如本书《在线书店》就存在此问题,让WEB-INF/classes/目录下只剩bookshop目录,则可解决乱码。

9>每次修改Bean后,最好重启tomcat,而且最好把Tomcat中Work目录下的相应目录删除,否则可能导致你的修改没有更新,陷入进一步的痛苦中……

10>修改JSP文件无需重启Tomcat;

11>用SELECT语句检索出的数据,因为使用Map缓存数据,key是区分大小写的,应统一为大写或小写。但SELECT语句与数据表之间不区分大小写;
如:

strSQL = "SELECT ID, Name FROM BookInfo "
……
rs.getInt("id"); // 错误
rs.getInt("ID"); // 正确

12>新版MySQL中加密密码不应使用password,而应使用MD5或 SHA1;本书《医院门诊》存在此问题,因而无法登录;

13>如果使用下面几步仍不能消除从MySQL中读出的中文乱码,把WEB-INF\classes\目录下非你自己开发的目录删除,此版发型的《隽隽在线书店》存在此问题;

14>如果以上方法仍有乱码存在,应该是自己程序的细节问题了,比如有些地方特意调用了编码转换函数,
如 uniStr = new String(tempByte,"ISO8859_1");

15>注意编码表示方式在JSP与MySQL中的区别,如下:
JSP: GB2312, GBK, UTF-8....
MySQL: gb2312, gbk, utf8....

-------------------------------------------------------

关键问题:编码,建议统一为GB2312或GBK,本文使用GB2312,GBK未测试;

【Step1】: 消除纯HTML页和JSP页在Tomcat环境下运行的乱码

这个是由于流览器无法选择编码方式造成的, 手动从IE中选择“GB2312”即可解决;也可以网页中加入META标记或Page指令;
META标记如下:
<meta http-equiv="Content-Type" content="text/html; ch***t=GB2312">
Page指令如下:
<%@ page language="java" contentType="text/html; ch***t=GB2312" pageEncoding="GB2312"%>
前面说明中已经提到, META在2K下可能不起作用(XP下时了时坏),因为简单起见,加入Page指令似乎是一个一劳永逸的事情;

总结: 加入Page指令,一定可以使纯JSP页面或HTML页面在Tomcat环境下正常显示。


【Step2】: 消除从MySQL数据库中读出中文的乱码

分为两个目标: step1: 从MySQL客户端查看中文正常, step2: 从网页中查看中文正常;

1: 在用SQL脚本创建数据库前,设置MySQL的默认编码方式为“gb2312”,
此步可以在mysql-administrator-1.1.0-rc-win.msi中完成,或者是MySQL Server向导;
这样设置完毕后再用SQL 脚本创建数据库, 注意如果SQL脚本中有设置字符集为latin1或utf-8的语句,一定要删除。
已发现目前版本《在线书店》中的SQL脚本中带有设置默认字符集为latin1,一定要删除!

创建数据库完毕后,用MySQL CC或MySQL Admin可检查所创建的数据库的字符集,如果正确,则用MySQL CC或MySQL Admin都可以正常查看中文;

2: 一般情况下,到这一步,在网页中已经基本能正常显示中文了,但凡事总有例外,可以在数据库连接串处再特别说明一下:
String url ="jdbc:mysql://localhost/BookStore?useUnicode=true&characterEncoding=gb2312";
conn=DriverManager.getConnection(url,"root","");


一般情况下用 String url ="jdbc:mysql://localhost/BookStore"应该就能正常显示中文。


总结:修改MySQL Server数据库默认字符集为“GB2312”,从MySQL读出中文可正常显示;

例外: 此时仍有可能还有乱码,如本书光盘中的《在线书店》,请参见前面的说明。


【Step3】: 消除插入MySQL数据库中的中文乱码

此步比较简单,在JSP页面中加入如下代码:
request.setCharacterEncoding("GB2312");

------------------------------------------------------
THE END, Enjoy it!



搜索更多相关主题的帖子: JSP MYSQL 乱码 交互 
2006-08-31 15:46
无理取闹
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:53
帖 子:4264
专家分:0
注 册:2006-7-26
收藏
得分:0 

我试试


win32汇编
病毒 加密
目前兴趣所在
2006-08-31 21:28
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
老好的版本

淘宝杜琨
2006-09-03 09:38
快速回复:[转载]MYSQL与JSP交互过程中的乱码解决方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012881 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved