|  首页  |  资讯  |  评测  |  活动  |  学院  |  访谈  |  专题  |  杂志  |  产服  |  
您现在的位置:硅谷网> 学院> 论文>

硅谷网学院:JSP动态网站开发乱码如何处理

2013-12-25 16:39 作者:尹强国 来源:硅谷网 HV: 编辑: 【搜索试试
  硅谷网12月25日讯 中文乱码是JSP动态网站开发中经常遇到的问题,本文从字符编码介绍、JSP页面显示乱码处理、JSP表单传递过程中出现乱码处理、读写数据库出现乱码处理进行了研究和探讨,并给出了乱码处理的解决方案。
  Java具有跨平台特性,很多公司将Java作为软件开发的首选语言,在软件开发中被广泛使用。JSP(JavaServerPages)是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准。使用JSP能建立与平台无关、功能强大的Web网站,是目前很受欢迎的一种开发动态网站的应用程序。在基于JSP的动态网站开发过程中,由于使用的操作系统、浏览器以及数据库所使用的编码方式不同,对中文的支持也不相同,中文乱码问题经常困扰着程序开发人员,下面就中文乱码的几种问题进行探讨,并给出解决办法。
  JSP中出现的中文乱码主要可以归纳为:JSP页面显示乱码、表单传递过程中出现乱码、读写数据库出现乱码。
  一、字符编码介绍
  Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。各种语言可建立与Unicode的映射关系,Unicode支持相互转换、处理和显示不同语言,Java也是基于这一点实现了不同语言的转换。
  UTF,是UnicodeTextFormat的缩写,意为Unicode文本格式。是在Unicode定长编码的基础上产生的不定长编码,用1-6个字节编码。UTF编码带简单校验功能,同时方便了网络数据传输。
  GBK即汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902,总共收录了883个符号,21003个汉字及提供了1894个造字码位。GB2312是中华人民共和国国家标准汉字信息交换用码,简称国标码。GBK能表示简体字和繁体字,而GB2312只表示简体字,GBK兼容GB2312编码。
  二、JSP页面显示乱码处理
  1.如果是JSP页面,由于JSP采用ISO8859-1(一种定长单字节字符集,不能识别中文)作为默认页面字符编码,可在JSP文件的开头部分使用page指令指定JSP页面字符编码为GB2312或者GBK。当JSP文件被编译时,中文字符将从GB2312或GBK格式向Unicode格式转换,而不是从所用的操作系统的file.encoding格式转换为Unicode,这样就避免了乱码的出现。代码如下:<%@pagecontentType="text/html;charset=gb2312"%>。
  2.如果是Servlet页面,可以调用response的setContentType()方法,代码如下:response.setContentType("text/html;charset=gb2312")。
  3.如果是HTML页面,可在HTML页面头部加入如下代码:<Metahttp-equiv="Content-Type"Content="text/html;Charset=gb2312">,以避免中文乱码的出现。
  三、JSP表单传递过程中出现乱码处理
  1.JSP页面采用表单提交时,如果使用request.getParameter()得到String类型数据,其编码方式为ISO8859-1,提交数据含有中文,获取数据后,返回的如果是乱码,可以在标记<html>之前,加<%request.setCharacterEncoding("GBK")%>。该方法适用于表单以post方式提交参数,对get方式不起作用。
  2.对接受到的参数进行编码转换。使用request.getParameter()方法获取中文参数之后,用getBytes()方法进行编码转换,使中文正确显示,代码如下:
  Stringname=request.getParameter("uname");
  Stringname1=newString(name.getBytes("ISO-8859-1"),"GBK");
  3.修改配置文件server.xml,找到含有port="8080"的Connector区块,在最后加上:URIEncoding="GBK"。然后重启tomcat。
  4.如果页面较多,可以用过滤器解决,首先建一个过滤器类filter,代码如下:
  packagecn.wfec.www.filter;
  importjava.io.IOException;
  importjavax.servlet.Filter;
  importjavax.servlet.FilterChain;
  importjavax.servlet.FilterConfig;
  importjavax.servlet.ServletException;
  importjavax.servlet.ServletRequest;
  importjavax.servlet.ServletResponse;
  publicclassEncodingFilterimplementsFilter{
  publicvoiddestroy(){}
  publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,
  FilterChainarg2)throwsIOException,ServletException{
  arg0.setCharacterEncoding("GBK");
  arg2.doFilter(arg0,arg1);
  }
  publicvoidinit(FilterConfigarg0)throwsServletException{}
  }
  之后在web.xml中添加如下代码:
  <filter>
  <filter-name>encoding</filter-name>
  <filter-class>cn.wfec.www.filter.EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>encoding</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
  四、读写数据库出现乱码处理
  如果在JSP开发中使用MySQLServer数据库,在数据库读写过程中容易出现乱码,可以将数据库默认支持的编码格式直接改为GBK或者GB2312。在安装目录下找到my.ini文件,在[client]区设置:default-character-set=GBK,在[mysqld]区设置:default-character-set=GBK。修改后,数据库默认支持的编码格式修改成为中文编码,这样解决了使用MySQLServer数据库出现的乱码问题。如果在开发中使用SQLServer,将数据库默认语言设置为SimplifiedChinese即可。
  如果在读MySQL数据库时中文出现乱码,可在连接数据库时,在url后加:"?useUnicode=true&characterEncoding=GBK"。因为采用JDBC驱动,在程序和数据库间传递数据是以ISO8859-1为默认编码格式,从而导致乱码的产生。
  如果在写MySQL数据库时中文出现乱码,可在ISO8859-1格式的数据写入数据库之前,转换为中文编码格式。在执行写数据库操作的前一句写入代码:Stringstr1=newString(str.toString().getBytes("8859_1"),"GBK");
  五、结束语
  在基于JSP的网站开发过程中,中文乱码问题并不难解决。如果出现中文乱码,要认真分析原因,多做试验,才能有效地解决中文乱码问题。
【对“硅谷网学院:JSP动态网站开发乱码如何处理”发布评论】

版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
广告
相关
·董燕:计算机网络安全面临的问题及防范措施
·近距离接触C语言 若干置换群问题的计算程序
·语音自动处理技术与组织机构代码系统的研究设计
·判断存在问题 数字显微系统可在霉菌试验中应用
·《硅谷》:墙体技术控制在质量问题中的探讨
·差压流量计在天然气计量中的故障、分析及处理
·《硅谷》杂志:深冷仪表接线头氧化问题研究处理
·《硅谷》杂志:新型地基加固处理方法概述
头条
硅谷网解密:4G网络中的微波传输解决方案 硅谷网解密:4G网络中的微波传输解决方案
在2013年12月4日,工信部向中国移动、中国联通、中国电信颁发TD-LTE(4G)经营许可之后……
·硅谷网解密:4G网络中的微波传输解决方案
·创意产业的批量化规律 工业造型方法论之加减
·《硅谷》杂志:浅谈电信运营商开展IPTV业务
·《硅谷》杂志:新型桌面搜索关键技术的研究与
·硅谷杂志:基于时间技术的搜索引擎排名算法
图文
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
利用重力势能做功发电介绍和势能输出系统介绍
利用重力势能做功发电介绍和势能输出系统介
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
利用重力势能做功发电介绍和势能输出系统介绍
利用重力势能做功发电介绍和势能输出系统介
最新
·佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
·利用重力势能做功发电介绍和势能输出系统介绍
·李磊:新时代下电网调度自动化技术的发展分析
·提升企业竞争力以及企业人力资源管理优化思考
·《硅谷》杂志:采油分层测静压工艺技术浅究
热点
·判断连续时间系统的线性非时变性和因果性
·3DMAX+Vary室内漫游动画制作的技法浅析
·长期使人困惑的问题:TCP连接中断的实时检测
·佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
·关于汽轮机油系统失火原因分析及防范措施的一
旧闻
·硅谷杂志:无线通信技术在调度通信中的应用
·《科技与生活》杂志:钢铁厂厂址的选择
·硅谷杂志:化工生产过程中的DCS监控系统的应
·硅谷杂志:视频会议系统建设应用分析
·颜海宙:谈谈工业锅炉节能运行的优化措施
广告
硅谷影像
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
利用重力势能做功发电介绍和势能输出系统介绍
利用重力势能做功发电介绍和势能输出系统介绍
公关负责人离职背后:危机公关案例分析
公关负责人离职背后:危机公关案例分析
硅谷网解密:4G网络中的微波传输解决方案
硅谷网解密:4G网络中的微波传输解决方案
使用Autoit脚本在虚拟内存盘设置考试模拟系统
使用Autoit脚本在虚拟内存盘设置考试模拟系统
探秘开滦集团设备租赁管理系统的设计和实现
探秘开滦集团设备租赁管理系统的设计和实现
关于我们·About | 联系我们·contact | 加入我们·Join | 关注我们·Invest | Site Map | Tags | RSS Map
电脑版·PC版 移动版·MD版 网站热线:(+86)010-57255600
Copyright © 2007-2020 硅谷网. 版权所有. All Rights Reserved. <京ICP备12003855号-2>