进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 网站开发 -> JSP -> 文章内容  
关于JSP中,中文问题(泛指字符问题),以及常见错误调试手记

关于JSP中,中文问题(泛指字符问题),以及常见错误调试手记

sports98写于2001-1-9

序言:
在论坛中,生活中,工作中,有不少和我一样属于鸟级的用户,在面对着不明白的问题的时候就盲目了,多交流,多写写日记就好的多了

文章内容关于:2001-01-08日,编写/调试[用户注册程序]

编写环境:WIN2K(简体中文版) server sp2 + TOMCAT4.0 + J2SDK1.3+MYSQL4.0(alpha)
检测数据库内容环境:WIN2K(简体中文版) server sp2 + IIS5.0 + PHP4.0+MYSQL4.0(alpha)+PHPMYADMIN2.0

程序代码(最终程序代码):
----------------------------------------------------------------------------------------------------------------------
<%@ page  import="java.sql.*" contentType="text/HTML;charset=gb2312" %>
<%//获取提交信息
String reg_name=new String();
String reg_nick=new String();
String reg_pws=new String();
String reg_pws_rp=new String();
String reg_sex=new String();
String reg_email=new String();
String reg_email_rp=new String();
String reg_address=new String();
String reg_tel=new String();
String reg_hand=new String();
String reg_counter=new String();
String reg_city=new String();
String reg_zip=new String();
String reg_company=new String();
String reg_calling=new String();
String reg_place=new String();
String reg_question=new String();
String reg_answer=new String();
String reg_submit=new String();
String reg_check=new String();
String reg_momo=new String();
String SQL=new String();
String reg_teminfo=new String();                            //欢迎信息,在论坛内将要使用
int flag_system;
int flag=1;                                                    //定义注册用户标记,1为活动用户,0为非活动拥护
int up=0;                                                    //定义用户登陆情况,注册时候默认为0次
//转换字符设置将ISO8859-1字符转为GBK字符,这样符合MYSQL字符,解决TOMCAT服务器下中文问题
reg_name=new String(request.getParameter("reg_truename").getBytes("GBK"),"ISO8859-1");            //用户真实名称
reg_nick=new String(request.getParameter("reg_name").getBytes("GBK"),"ISO8859-1");            //用户昵称
reg_pws=new String(request.getParameter("reg_pws").getBytes("GBK"),"ISO8859-1");                //用户密码
reg_pws_rp=new String(request.getParameter("reg_pws_rp").getBytes("GBK"),"ISO8859-1");        //校验密码
reg_sex=new String(request.getParameter("reg_sex").getBytes("GBK"),"ISO8859-1");                //用户性别
reg_email=new String(request.getParameter("reg_email").getBytes("GBK"),"ISO8859-1");            //电子邮件
reg_email_rp=new String(request.getParameter("reg_email_rp").getBytes("GBK"),"ISO8859-1");    //校验电子邮件
reg_address=new String(request.getParameter("reg_address").getBytes("GBK"),"ISO8859-1");        //详细地址
reg_tel=new String(request.getParameter("reg_tel").getBytes("GBK"),"ISO8859-1");                //联系电话
reg_hand=new String(request.getParameter("reg_hand").getBytes("GBK"),"ISO8859-1");        //手机或其他联系方式
reg_counter=new String(request.getParameter("reg_counter").getBytes("GBK"),"ISO8859-1");        //国家
reg_city=new String(request.getParameter("reg_city").getBytes("GBK"),"ISO8859-1");            //城市
reg_zip=new String(request.getParameter("reg_zip").getBytes("GBK"),"ISO8859-1");                //邮政编码
reg_company=new String(request.getParameter("reg_company").getBytes("GBK"),"ISO8859-1");        //公司名称
reg_calling=new String(request.getParameter("reg_calling").getBytes("GBK"),"ISO8859-1");        //职位性质
reg_place=new String(request.getParameter("reg_place").getBytes("GBK"),"ISO8859-1");            //职位
reg_question=new String(request.getParameter("reg_question").getBytes("GBK"),"ISO8859-1");    //机密问题
reg_answer=new String(request.getParameter("reg_answer").getBytes("GBK"),"ISO8859-1");        //机密答案
reg_submit=new String(request.getParameter("reg_submit").getBytes("GBK"),"ISO8859-1");        //提交变量
reg_check=new String(request.getParameter("reg_check").getBytes("GBK"),"ISO8859-1");            //是否检测过姓名标记
reg_momo=new String(request.getParameter("reg_momo").getBytes("GBK"),"ISO8859-1");            //用户简单信息MOMO
////////////////////////
reg_teminfo="论坛内欢迎信息";
reg_teminfo=new String(reg_teminfo.getBytes("GBK"),"ISO8859-1");
int reg_temflag=1;                                            //在论坛内寻找该字段以便弹出即时信息
boolean temp=reg_check.equals("120980");                    //判断标记,以后采用SESSION进行保存判断值
try{
if(temp)
{
%>
    <HTML>
    <head><title>注册</title>
    </head>
    <style type="text/CSS">
    body {font:9pt;color:black;margin:0}
    td {font:9pt;color:black}
    </style>
    <body>
    <center>
<%
//////////////////////////////////////////判断用户注册信息////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////
java.lang.String strConn;
Class.forName("org.gjt.mm.mysql.Driver").newInstance(); //声明驱动程序For mysql
//声明连接对象 Connection C------C 为连接对象  Connection 为声明语句
Connection C = DriverManager.getConnection("jdbc:mysql://localhost/news?user=mysql&password=mysql&useUnicode=true&characterEncoding=8859_1"); //连接到数据库
Statement s=C.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs=s.executeQuery("select * from reg where nick='"+reg_name+"'"); //声明执行对象
if(rs.next())
    {
    %>
    <table width=100% cellpadding=0>
        <tr><td height=100px></td>
        <tr><td align=center><font color=red>错误:非法操作注册程序!</font>
        <tr><td height=30px></td>
        <tr><td align=center><font color=red>提示:您已经注册或正在非法浏览本页面<br>本页面不允许刷新!</td>
        <tr><td height=30px></td>
        <tr><td align=center><button onclick="javascript:window.close()">关闭本页面</button></td>
    </table>
    <%
    }
else
    {
     SQL="INSERT INTO reg (id,flag, name, nick, sex, pws, email, address, tel, hand, city, zip, company, counter, momo, teminfo, temflag, calling, place, question, answer, up) VALUES ('','"+flag+"', '"+reg_name+"', '"+reg_nick+"', '"+reg_sex+"', '"+reg_pws+"', '"+reg_email+"', '"+reg_address+"', '"+reg_tel+"', '"+reg_hand+"', '"+reg_city+"', '"+reg_zip+"', '"+reg_company+"', '"+reg_counter+"', '"+reg_momo+"', '"+reg_teminfo+"', '"+reg_temflag+"', '"+reg_calling+"', '"+reg_place+"', '"+reg_question+"', '"+reg_answer+"', '"+up+"')";
     s.executeUpdate(SQL);
%>
    <br><br>
            <table width="400" cellpadding=0 cellspacing=0 style="border:1 solid black ">
                <tr><td colspan=2 height=15px></td>
                <tr><td colspan=2 align=center>恭喜!您已经注册成功,您的基本信息为...
                <tr><td colspan=2 height=15px></td>
                <tr><td align=right width="30%">用户名:<td align=left width="70%"><%=new String(reg_nick.getBytes("ISO8859-1"),"GBK")%>
                <tr><td align=right>真实姓名:<td align=left><%=new String(reg_name.getBytes("ISO8859-1"),"GBK")%>
                <tr><td align=right>性别:<td align=left><%=reg_sex%>
                <tr><td align=right>密码:<td align=left><%=reg_pws%>
                <tr><td align=right>电子邮件:<td align=left><%=reg_email%>
                <tr><td align=right>详细地址:<td align=left><%=new String(reg_address.getBytes("ISO8859-1"),"GBK")%>
                <tr><td align=right>联系电话:<td align=left><%=new String(reg_tel.getBytes("ISO8859-1"),"GBK")%>
                <tr><td align=right>第二联系方式:<td align=left><%=reg_hand%>
                <tr><td align=right>所在城市:<td align=left><%=reg_city%>
                <tr><td align=right>邮政编码:<td align=left><%=reg_zip%>
                <tr><td align=right>公司名称:<td align=left><%=new String(reg_company.getBytes("ISO8859-1"),"GBK")%>
                <tr><td align=right>国家:<td align=left><%=reg_counter%>    
                <tr><td align=right>工作性质:<td align=left><%=reg_calling%>
                <tr><td align=right>职务:<td align=left><%=reg_place%>
                <tr><td colspan=2 height=15px></td>
                <tr><td colspan=2 align=center>提示:您已经登陆本站<font color=red><%=up%></font>次,您可以使用本帐户直接登陆论坛...
                <tr><td colspan=2 height=15px></td>
                <tr><td align=center><a href=../../"/">返回主页</a><td align="center"><a href=../../"">进入论坛</a></td>
        </table>
<%
        }
%>
    </center>
    </body>
    </HTML>
<%
}
else
{
%>
    <HTML>
    <head>
    <title>Error</title>
    </head>
    <body><center><br><br>
    <font face="黑体" size=5 color=red>抱歉!非法的操作步骤!</font><br>
    <font face="impact" color=black>Sorry!YOU have nullity at register!please register again!</font>
        </center>
    </body>
    </HTML>
<%
}
}
catch (Exception t) {
    out.println("<br><br>错误:本页不允许刷新!<br>或您执行了非法操作!<br>Error:This page can't refresh!<br>you have error</center></body></HTML>");
}
%>

本程序依照
协议-----》预注册(判断呢称是否被注册)-----》成功(打印注册项目)-----》提交
(重新选择呢称)↑        |(失败)
|_________|

提交后-》判断是否为正常注册(temp为检测标记)
提交成功-》打印注册基本资料,添加COOKIE
注册失败-》打印失败(有可能是服务器问题)。
至此,程序完成

碰到问题:
按照调试阶段碰到的问题先后攥写,
1、    数据正常添加,但使用PHPMYADMIN查看数据库内,所有的汉字均显示为?????????。
2、    数据正常添加,但JSP页面没有按照设定的程序打印出资料。
3、    不可以刷新,一刷新程序重复执行一次,而发生数据库内字段冲突,导致JSP报错!

调试过程:
在这里,首先感谢[令少爷][ wayne.xiao]以及关心咱这只“鸟“的朋友们

关于第一个碰到的问题,
问题1、
首先调试了程序,并且在executeUPdate前后都加上OUT来查看是否是程序造成的(转换类型),但是输出的均为正常。
进入PHPMYADMIN查看数据,所有的汉字均为?????。
具体内容可以查看
http://www.dev-club.com/club/bbs/showAnnounce.ASP?id=1123399帖子
后经令少爷提示以及帮助,将字符改成GBK字符集合
(后来发现从数据库内提取出来的就要转换成ISO8859-1字符集了,要不也是?????!!头疼的字符问题)
到此,问题告一段落!

问题2
无法正常显示!当我按上面将需要输入与输出的字符均转为字符集后,却发现注册后无法显示信息。所显示的页面的HTML的默认的输出空页面(但executeUpdate已经执行,数据库内资料已经添加)!找了半天没找到问题,赶快求救!:J:JJJJJJJ
经过提示,先将所有的执行步骤加入 try内,然后查看出错在哪里,发现出错在打印注册成功资料那里?左看右看没发现什么啊!!!
“GBK“靠!又是字符集问题!!!我把”GBK“给写成”GDK”l了LLLLLLLLL
(很严重哦!!才学程序设计的时候所有的书本都说不要写错啊)
那是变量的名称,没想到只因为一个字符集合的名称害得我忙了2个小时!!
所有的鸟,不论大鸟,小鸟,可不要再犯我这个低级错误了啊!
至此问题解决

问题3、
页面刷新问题,由于2问题的解决采用了TRY,这个问题也就解决了,
在catch (Exception t) {}中捕获错误(数据库报出的错误!)另外在TRY中也有个捕捉错误的地方,不过我这里有时候他能报错有时候不报错!很讨厌,不过由于用catch (Exception t) {}捕获这个错误,所以这个问题也就解决了。


小结:
程序设计,很枯燥,不过也很美丽,当你完成她的时候,感觉是非常的爽!
不过大姑娘绣花要心细点~~  低级错误尽量避免,拼写的时候要注意不要错了哦!
还有,下步准备将程序写到BEAN里,这样的写法对于页面来说不容易布置,
对于代码的安全,少了一个安全级,对于错误的处理,增加了麻烦,所以吗~~大家自己看了

在百度中搜索:关于JSP中,中文问题(泛指字符问题),以及常见错误调试手记
在Google中搜索:关于JSP中,中文问题(泛指字符问题),以及常见错误调试手记
在Yahoo中搜索:关于JSP中,中文问题(泛指字符问题),以及常见错误调试手记

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· 微软公司关于Windows和Office正版增值计划..
· 网页设计:关于CSS框架网页的设计
· 关于CSS 框架的论述
· 初学:关于域名和空间的一些认识
· [图文] Java小技巧:关于Cookie的操作
· 关于ASP.NET页面打印技术的总结
· [图文] Excel表格中关于序号处理的五则技巧..
· [图文] 关于Photoshop自定义滤镜的原理和探..
· 经验交流:关于软件设计的一点心得体会
· Photoshop中关于配置的15条技巧
 
· 提升JSP页面响应速度的七大秘籍绝招
· 开发一个调试JSP的Eclipse插件
· JSP报表打印的一种简单解决方案
· JSP/Servlet的重定向技术综述
· java的md5加密类(zt)
· 一个用来访问http服务器的东西。功能类似..
· 菜鸟调试手记一(sql server 中文问题)
· Java性能优化技巧集锦(2)
· 用java压缩文件示例(没有中文问题)
· 使用XML/HTC/DHTML模拟标准Windows菜单

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)