设为首页 收藏本站
查看: 1265|回复: 0

[经验分享] 更深入的TOMCAT中文乱码解决之道,包括GET/POST(转)

[复制链接]

尚未签到

发表于 2017-2-8 12:54:56 | 显示全部楼层 |阅读模式
  在tomcat5中发现了以前处理tomcat4的方法不能适用于处理直接通过url提交的请求,上网找资料终于发现了最完美的解决办法,不用每个地方都转换了,而且无论get,和post都正常。    
  
  -------------------  
   
  问题描述:  
   
  1   表单提交的数据,用request.getParameter("xxx")返回的字符串为乱码或者??  
  2   直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request.getParameter("name")时返回的是乱码;按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用  
   
  原因:  
  1   tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理  
  2   tomcat对get方式提交的请求对query-string   处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding("GBK"))不起作用。  
   
   
  解决办法:  
   
  首先所有的jsp文件都加上:  
   
   
  1   实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。)    
   
  1)只要把%TOMCAT安装目录%/   webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的WEB-INF\classes目录filters下,如果没有filters目录,就创建一个。  
  2)在你的web.xml里加入如下几行:  
   
          <filter>  
                  <filter-name>Set   Character   Encoding</filter-name>  
                  <filter-class>filters.SetCharacterEncodingFilter</filter-class>  
                  <init-param>  
                          <param-name>encoding</param-name>  
                          <param-value>GBK</param-value>  
                  </init-param>  
          </filter>  
   
          <filter-mapping>  
                  <filter-name>Set   Character   Encoding</filter-name>  
                  <url-pattern>/*</url-pattern>  
          </filter-mapping>  
   
  3)完成.  
   
  2   get方式的解决办法  
  1)   打开tomcat的server.xml文件,找到区块,加入如下一行:  
  URIEncoding=”GBK”  
  完整的应如下:  
          <Connector    
  port="80"                               maxThreads="150"   minSpareThreads="25"   maxSpareThreads="75"  
                                enableLookups="false"   redirectPort="8443"   acceptCount="100"  
                                debug="0"   connectionTimeout="20000"    
                                disableUploadTimeout="true"   URIEncoding="GBK"   />  
   
  2)重启tomcat,一切OK。  
   
  执行如下jsp页页测试是否成功  
   
   
  <%@   page   contentType="text/html;charset=gb2312"%>  
  <%@   page   import="java.util.*"%>  
  <%  
          String   q=request.getParameter("q");  
          q   =   q   ==   null?   "没有值"   :   q;  
  %>  
  <HTML>  
  <HEAD><TITLE>新闻列表显示</TITLE>  
  <META   http-equiv=Content-Type   content="text/html;   charset=gb2312">  
  <META   http-equiv=pragma   content=no-cache>  
  </HEAD>  
   
  <body>  
  你提交了:  
  <%=q%>  
  <br>  
  <form   action="tcnchar.jsp"   method="post">  
  输入中文:<input   type="text"   name="q"><input   type="submit"   value="确定">  
  <br> <a   href="tcnchar.jsp?q=中国">通过get方式提交</a>  
  </form>  
  </BODY>  
  </HTML>  
   
  测试结果如果你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-339337-1-1.html 上篇帖子: 使用Tomcat 5.5在输入中文条件进行翻页查询时乱码问题解决 下篇帖子: (转)tomcat下使用自定义类加载器遇到的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表