欢迎来到天天文库
浏览记录
ID:9124597
大小:58.16 KB
页数:7页
时间:2018-04-18
《jsp中文编码乱码的分析与解决》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、jsp中文编码乱码的分析与解决jsp技术目前普遍应用于网络编程,java在中文处理方面经常出现乱码现象。本文从分析各种常见的jsp页面中文乱码产生的原因入手,并给出该乱码的解决方案。经过多次实践,基本可以解决常见jsp页面常见的中文乱码问题,有着很好的广泛性。匕的信息,关键词网络编程;中文乱码;jsp页面编码TP39A1674-6708(2011)57-0183-020引言JSP(JavaServerPages)是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准,jsp技术采用java作为开发脚本语言,java本身有着很好的跨平台性,但是jsp在结合页面技
2、术后,最使人头疼的一个问题就是不能很好的处理中文乱码问题,在开发过程中带来诸多不便,本文从剖析中文乱码产生的各种原因入手,并给出相应的解决方案。1中文乱码的根源1)中文的编码很多,在不同的情况下可能有多种不同的二进制值;2)在某些应用中传递数据时,可能把中文转换成其它形式;3)在一个应用系统中,编码之间存在各种各样的转换;4)在转换过程中需要制定编码方式;5)在具体实践过程中,可能忽略或忘记设置编码;6)不同的软件环境其编码设置方式不同也容易导致中文乱码;7)编码工具的多样性以及对编码的模糊认识不清。2常见的jsp页面中文乱码网上常出现的JSP/Servletenco
3、ding问题一般都表现在browser或应用程序端,如:浏览器中看到的Jsp/Servlet页面中的汉字怎么都成了‘?浏览器中看到的Servlet页面中的汉字怎么都成了乱码;JAVA应用程序界面中的汉字怎么都成了方块;Jsp/Servlet页面无法显示GBK汉字;Jsp/Servlet不能接收form提交的汉字;JSP/Servlet数据库读写无法获得正确的内容。3中文乱码产生原因分析1)在jsp中如果指定了〈%@pagecontentType=’’text/l;charset=A"%〉,那么在该jsp中所有用到的数据,如果?]有指定编码,那么这些数据的编码方式为A。
4、从request得到的数据如果没存指定request的编码的话,默认编码为iso_8859-1。假设从别的地方得到的数据是使用原来初始的编码的,比如从数据库得到数据,如果数据库的编码是B,那么该数据的编码是B而不是A,也不是系统默认的,此时,如果要输出的数据的编码不是A,那么,很可能显示乱码,所以首先要将数据正确转化为编码A,然后再输出;2)在jsp中如果没有指定〈%@pagecontentType=〃text/l;charset=A〃%〉,那么默认的A编码为iso-8859-1;Servlet中如果执行了像response.setContentType(〃text/
5、l;charset=A〃),说明将response的字符输出流编码设置为A,所有要输出的数据的编码要转化为A,否?t就会出现乱码。Servlet中从request得到的数据的编码和jsp中一样的,但是在servletjava文件中构造的数据是使用是系统默认的编码(iso-8859-1);servlet中从外部得到的数据使用的是原来的编码,比如从编码为B的数据库得到的数据是编码为B,不是A,也不是系统默认的编码。4中文乱码解决方案4.1JSP页面显示为乱码如果只在页面中加入,该处指定的编码仅为浏览器对字符的显示处理,但是服务器的编码方式和浏览器的编码方式对字符的单独处理
6、,所以还要在页面的第一行加上:<%@pagecontentType=z,text/htcharset=gb2312"%〉,就可以消除乱码了。4.2Servlet接收Form/Request传递的参数时显示为乱码方法1:在使用request获取参数前,加上此语句:request.setCharacterEncoding(〃A〃),此处设置的编码要和传递参数的页面采用的编码方式一致。方法2:使用过滤器(filter),在doFilter方法中做如下处理:packagecom.knorray.filters:publicclassCharEncodingFilterimpl
7、ementsFilter{protectedStringencoding=null:publicvoidinit(FilterConfigfilterConfig)throwsServletException{this.encoding=filterConfig.getlnitParameter("encoding");}publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain){if(request.getCharacterEncoding()
此文档下载收益归作者所有