下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*web xml *web. xml *<filter><filter-name>MyFilter</filter-name><filter-class>cray. util. MyFilter</fiIter一class</filter>filter-mapping<filter-name>MyFilter</filter-name><url-pattern>/*</url-pattern></f订ter-mapping>MyFilter javapackage er
2、ay. util;import javax servletimport javax servlet http HttpServlet;import java io.IOException;public class MyFilter extends HttpServlet implements Filterprivate FilterConfig filterConfig;public void init (FilterConfig filterConfig) throws ServletException this .filterConfig = filterConfig;public voi
3、d doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)tryrequest setCharacterEncoding (Z/GBKZ/);filterChain. doFilter (request, response); catch (ServletException sx)filterConfig getServletContext () log(sx getMessageO); catch (IOException iox)filterConfig getServletCo
4、ntext () log(iox getMessageO);public void destroy()1、最基本的乱码问题。这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导 致的乱码。page language二"java" pageEncoding二"UTF-8"%><% page content Type 二"tex t/html; chdrse t 二 iso8859T"%<html><head><title> 中文问题 </title><met
5、a http-equiv二"Content-Type" content二"text/html; charset=UTF-8,></head></head><body>我是个好人</body></html>三个地方的编码。第一个地方的编码格式为jsp文件的存储格式。Ecljpse会根据这个编码格 式保存文件。并编译jsp文件,包括里面的汉字。第二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-l,这样如 有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也 是使用
6、iso8859-l的编码格式。所以如果没有这一行的话,“我是个好人”也会出 现乱码。必须一致才可以。第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话, 这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编 码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式。出现了乱码。2、表单使用Post方式提交后接收到的乱码问题这个问题也是一个常见的问题。这个乱码也是tomcat的内部编码格式 iso8859-l在捣乱,也就是说post提交时,如果没有设置提交的编码格式,则会以 iso8859-l方式进行提交,接受的jsp却以utf-8的方式接受。导致乱码。既然
7、这 样的原因,下面有儿种解决方式,并比较。A、接受参数时进行编码转换String str 二 newString (request. getParameter ("something"). getBytes ("ISO-8859T"), "utf- 8);这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。B、在请求页面上开始处,执行请求的编码代码,request. setCharacterEncoding ("UTF-8"),把提交内容的字符集设为 UTF-8。 这样的话,接受此参数的页面就不必在转码了。直
8、接使用String str = request. getParameter("something");即可得到汉字参数。但 每页都需要执行这句话。这个方法也就对post提交的有效果,对于get提交和上传 文件时的enctype二"mult ipart/form-datd"是无效的。稍后下面单独对这个两个的 乱码情况再进行说明。C、为了避免每页都要写 request. setCharacterEncoding (,/UTF-8,/),建议使 用过滤器对所有jsp进行编码处理。这个网上有很多例子。请大家自己查阅。3、表单get提交方式的乱码处理方式。如果使用
9、get方式提交中文,接受参数的页面也会出现乱码,这个乱码的原因 也是tomcat的内部编码格式iso8859-l导致。Tomcat会以get的缺省编码方式 iso8859-l对汉字进行编码,编码后追加到url,导致接受页面得到的参数为乱码 /、o解决办法:A、使用上例中的第一种方式,对接受到的字符进行解码,再转码。B、Get走的是url提交,而在进入url之前已经进行了 iso8859-l的编码处 理。要想影响这个编码则需要在server, xml的Connector节点增加 useBodyEncodingForURI=,/true,/属性配置,即可控制tomcat对get方式的汉字编码方式,
10、上面这个属性控制 get提交也是用request. setCharacterEncoding ("UTF-8")所设置的编码格式进行 编码。所以自动编码为utf-8,接受页面正常接受就可以了。但我认为真正的编码 过程是,tomcat 乂要根据<Connector port二"8080"maxThreads二"150" minSpareThreads=,25,/ maxSpareThreads=,75,/enab 1 eLookups=,false,z redirectPort二"8443" acceptCou
11、nt二"100"debu萨"0" connection!imeout二"20000" useBodyEncodingForURI="true" disab 1 eUp 1 oadTimeout=,/1rueURIEncoding二” UTF-8” />里面所设置的URIEncoding二” UTF-8”再进行一次编码,但是由于已经编码为 utf-&再编码也不会有变化了。如果是从url获取编码,接受页面则是根据 URIEncoding二” UTF-8” 来进行解码的。4、上传文件时的乱码解决上传文件时,
12、form表单设置的都是enctype=,multipart/form-data,zo这种方 式以流方式提交文件。如果使用apach的上传组件,会发现有很多乱码想象。这是 因为apach的先期commons-fileupload. jar有bug,取出汉字后进行解码,因为这 种方式提交,编码乂自动使用的是tomcat缺省编码格式iso-8859-lo但出现的乱 码问题是:句号,逗号,等特殊符号变成了乱码,汉字如果数量为奇数,则会出现乱码, 偶数则解析正常。解决方式:下载commons-f i 1 eup 1 oadl. 1. 1. jar这个版本的jar已经解决了这些bug。但是取出内容时仍然需
13、要对取出的字符进行从iso8839-l到utf-8转码。已 经能得到正常所有汉字以及字符。5、Java代码关于url请求,接受参数的乱码url的编码格式,取决于上面所说的URIEncodin萨” UTF-8”。如果设定了这 个编码格式,则意味着所有到url的汉字参数,都必须进行编码才可以。否则得到的 汉字参数值都是乱码,例如个链接 Response. sendDerect ( "/a. jsp?name=张大维”);而在 a. jsp 里面 直接使用String name = request. getParameter(name);得到的就是乱码。因为规定 了必须是utf-8才可以,
14、所以,这个转向应该这样写:Response. sendDerect ( "/d. jsp?name=URLEncode. encode ("张大 维”,” utf-8w );才可以。如果不设置这个参数URIEncoding二” UTF-8”,会怎么样呢?不设置则就使用 了缺省的编码格式iso8859-lo问题乂出来了,第一就是参数值的个数如果是奇数 个数,则就可以正常解析,如果使偶数个数,得到最后字符就是乱码。还有就是如果 最后一个字符如果是英文,则就能正常解析,但中文的标点符号仍出现乱码。权宜之 计,如果您的参数中没有中文标点符号,则可以在参数值最后加一个英文符号来解决
15、乱码问题,得到参数后再去掉这个最后面的符号。也可以凑或使用。6、脚本代码关于url请求,接受到的参数乱码脚本中也会进行页面转向的控制,也会涉及到附带参数,并在接受页面解析这 个参数的情况。如果这个汉字参数不进行URIEncodin沪” UTF-8”所指定的编码处 理,则接受页面接受到的汉字也是乱码。脚本处理编码比较麻烦,必须有相应的编码 脚本对应文件,然后调用脚本中的方法对汉字进行编码即可。7、关于jsp在MyEclipse中打开的乱码问题对于一个已经存在的项目,Jsp文件的存储格式可能是utf-8o如果新安装的 eclipse,则缺省打开使用的编码格式都是iso8859-lo所以导致jsp里面的汉字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 超低延迟直播协议书信令
- 自救能力训练课件
- 呼吸内科肺癌化疗护理方案介绍
- 糖尿病足化脓性急性化治疗流程
- 大学生弘扬工匠精神的培养路径
- 科普互动区策划方案
- 初中新生行为规范
- 2026年宿州九中教育集团(宿马南校区) 教师招聘备考题库及完整答案详解
- 2026安徽铜陵市普济种子有限公司招聘派遣制人员1人备考题库附答案详解(满分必刷)
- 2026福建医科大学附属第一医院招聘非在编合同制人员20人备考题库(二)及答案详解【典优】
- 口腔材料学课件
- 盐酸凯普拉生片-临床用药解读
- 中建综合支架专项施工方案
- 医院财务制度专家讲座
- 2023年北京市中国互联网投资基金管理有限公司招聘笔试题库含答案解析
- 中控ECS-700学习课件
- 2023年上海市杨浦区中考一模(暨上学期期末)语文试题(含答案解析)
- 甲状腺病变的CT诊断
- 仁爱英语九年级上册Unit 2 中考英语复习课
- 铁路线路封闭设施管理办法
- 摩擦、磨损与润滑课件
评论
0/150
提交评论