`
mx19841031
  • 浏览: 76147 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

Tomcat5中文问题解决之道

阅读更多
在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文件拷到你的webapp目录/filters下,如果没有filters目录,就创建一个。

  2)在你的web.xml里加入如下几行:


Java代码


<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>  

<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”

  完整的应如下:

 

Java代码


 <Connector port="80"  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
               enableLookups="false" redirectPort="8443" acceptCount="100"  
               debug="0" connectionTimeout="20000"  
               disableUploadTimeout="true"  
               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页页测试是否成功

  

Java代码


<%@ 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>   
  <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>  

<%@ 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>  <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>

  测试结果如果你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!

分享到:
评论

相关推荐

    tomcat5中文问题解决之道

    tomcat5中文问题解决之道

    解决tomcat中文乱码问题

    解决tomcat中文乱码问题,有详细的解释说明,希望对需要的人有所帮助

    tomcat5中文问题完美解决

    【Tomcat5中文问题解决详解】 在使用Tomcat5运行含有中文内容的应用程序时,可能会遇到中文乱码的问题。这通常涉及到HTTP请求的处理方式,尤其是对于POST和GET请求的不同处理策略。以下是对该问题的深入解析及解决...

    Tomcat中文问题之完美解决

    ### Tomcat中文问题之完美解决 #### 背景与问题描述 在使用Tomcat部署Web应用程序时,中文字符的编码处理常常会遇到乱码的问题。这种现象在使用GET或POST方式传递包含中文字符的数据时尤为明显。文章指出,在...

    Tomcat 中文问题及解决方法总结

    ### Tomcat 中文问题及解决方法总结 ...通过以上方法,可以有效解决Tomcat中文环境中出现的乱码问题,提高开发效率并保证系统的稳定性。对于不同的应用场景和版本,可以选择合适的解决方案来应对中文乱码的问题。

    解决tomcat下中文乱码问题

    解决 Tomcat 下中文乱码问题 在本文中,我们将讨论如何解决 Tomcat 下中文乱码问题。该问题是由于 Tomcat 默认的字符编码设置不正确引起的。我们将通过设置 Connector 元素的 URIEncoding 属性和在过滤器中设置字符...

    解决Tomcat中文乱码

    ### 解决Tomcat中文乱码问题 在使用Tomcat服务器部署Web应用时,经常会遇到中文乱码的问题。本文将详细探讨这一现象的原因,并提供一种有效的解决方案。 #### 问题背景 在Tomcat环境下运行Web应用程序时,如果...

    Ubuntu下使用Tomcat搭建网站出现中文乱码的问题.docx

    要解决 Ubuntu 下使用 Tomcat 搭建网站出现中文乱码的问题,需要统一服务器的字符编码,包括 Linux 服务器、Tomcat 配置文件和 MySQL 数据库。通过统一字符编码,可以确保服务器的字符编码是一致的,避免乱码的出现...

    如何解决Tomcat下中文乱码问题?

    总结来说,解决Tomcat下的中文乱码问题,关键在于确保JSP页面的编码与服务器设置一致,并在处理表单提交时正确设置请求的字符编码。在实际开发中,推荐使用UTF-8作为统一的编码标准,因为UTF-8能够兼容各种语言,...

    Tomcat和weblogic中文乱码问题解决方案

    Tomcat和WebLogic中文乱码问题解决方案 在 Java Web 开发中,中文乱码问题一直是困扰开发者的主要问题之一。 Tomcat 和 WebLogic 是两个常用的 web 服务器,都是支持 Servlet 和 JSP 的。然而,在使用这些服务器时...

    tomcat中文显示解决

    ### Tomcat中文显示解决方案 在部署基于Java的应用程序时,我们经常会遇到中文乱码的问题,尤其是在使用Apache Tomcat作为Web服务器的情况下。本文将详细介绍如何在Tomcat中正确配置以实现中文字符的正常显示。 ##...

    解决tomcat中文乱码问题.doc

    ### 解决Tomcat中文乱码问题 在使用Tomcat服务器部署Web应用时,经常会遇到中文乱码的问题。本文将详细探讨几种常见的乱码场景及其解决方案。 #### 一、JSP页面上的中文显示为乱码 **问题描述**:在JSP页面中直接...

    Docker容器部署tomcat出现中文乱码.docx

    解决 Docker 容器中 Tomcat 部署出现中文乱码的问题需要设置容器的 locale 为 en_US.UTF-8。在 Dockerfile 中添加环境变量 ENV LC_ALL en_US.UTF-8,然后重新构建 Docker 镜像和启动容器即可解决问题。同时,我们也...

    tomcat get提交中文乱码解决方案

    tomcat get提交中文乱码解决方案,修改tomcat server.xml 中以下为

    Tomcat参考手册中文版chm

    这份《Tomcat参考手册中文版chm》为开发者提供了全面的指引,无论是初学者还是有经验的管理员,都能从中获取所需的信息,解决在使用Tomcat过程中遇到的问题。通过深入学习和实践,我们可以更好地驾驭这个强大的Java...

    Tomcat配置中文解释&解决中文问题

    【标题】:“Tomcat配置中文解释&解决中文问题” 在Java Web开发中,Apache Tomcat是一个广泛应用的开源Servlet容器,用于部署和运行JSP和Servlet应用程序。本篇内容将深入探讨Tomcat的配置以及如何解决在处理中文...

    彻底解决Tomcat的页面提交时的中文问题

    彻底解决Tomcat的页面提交时的中文问题

Global site tag (gtag.js) - Google Analytics