tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alexander Hartner <a...@j2anywhere.com>
Subject Re: Encoding post data on Tomcat 7 using 2.0.3 corrupted
Date Tue, 27 Aug 2013 03:22:51 GMT
The problem was resolved by including both filters (org.jboss.weld.servlet.ConversationFilter
and org.apache.catalina.filters.SetCharacterEncodingFilter).



<?xml version="1.0" encoding="UTF-8"?>  
  
<web-app xmlns="http://java.sun.com/xml/ns/javaee"  
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 
         version="3.0">  
  
  <filter>  
    <filter-name>SetCharacterEncoding</filter-name>  
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
 
    <init-param>  
      <param-name>encoding</param-name>  
      <param-value>UTF-8</param-value>  
    </init-param>  
    <init-param>  
      <param-name>ignore</param-name>  
      <param-value>false</param-value>  
    </init-param>          
  </filter>  
  <filter>  
    <filter-name>Conversation</filter-name>  
    <filter-class>org.jboss.weld.servlet.ConversationFilter</filter-class>   
    
  </filter>  <filter-mapping>  
    <filter-name>SetCharacterEncoding</filter-name>  
    <url-pattern>/*</url-pattern>  
  </filter-mapping>    
  <filter-mapping>  
    <filter-name>Conversation</filter-name>  
    <url-pattern>/*</url-pattern>  
  </filter-mapping>  
  <listener>  
    <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
 
  </listener>  
  <session-config>  
    <session-timeout>  
      30  
    </session-timeout>  
  </session-config>  
</web-app>  



On 27/08/2013, at 12:14 AM, Konstantin Kolinko <knst.kolinko@gmail.com> wrote:

> 2013/8/26 Alexander Hartner <alex@j2anywhere.com>:
>> This may be more of an application problem than a tomcat issue, but I am
>> rather stuck with this one and hoping that somebody on this list may be
>> able to shed some light on my issue.
>> 
>> I am trying to post UTF-8 encoding text to my JSF2.2 application,
>> however the data received does not seem to be encoded correctly.I
>> narrowed this problem down to the weld listener. To illustrate the issue
>> I modified the test page from the tomcat faq:
>> 
>> 
>> 
>> 1. <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
>> 2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
>> 3. <html>
>> 4.   <head>
>> 5.     <title>Character encoding test page</title>
>> 6.   </head>
>> 7.   <body>
>> 8.     <p>
>> 9.       Encoding : <%=request.getCharacterEncoding()%>
>> 10.     </p>
>> 11.     <p>Data posted to this form was:
>> 12.       <%
>> 13.         request.setCharacterEncoding("UTF-8");
>> 14.         out.print(request.getParameter("mydata"));
>> 15.       %>
>> 16.     </p>
>> 17.     <form method="GET" action="index.jsp">
>> 18.       <input type="text" name="mydata">
>> 19.       <input type="submit" value="SubmitGET" />
>> 20.     </form>
>> 21.     <form method="POST" action="index.jsp">
>> 22.       <input type="text" name="mydata">
>> 23.       <input type="submit" value="SubmitPOST" />
>> 24.     </form>
>> 25.     .g. ç,g(,ö,s,,?, etc Soße " Test data "
>> 26.   </body>
>> 27. </html>
>> 
>> 
>> 
>> So I have a simple web application which only consist of this page, and
>> the weld library in WEB-INF/lib (weld-servlet-2.0.3.Final.jar).
>> 
>> So far so good. However as soon as I include the weld listener in my
>> web.xml file
>> 
>> 
>> 
>> 1. <?xml version="1.0" encoding="UTF-8"?>
>> 2.
>> 3. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
>> 4.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> 5.          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
>> 6.          version="3.0">
>> 7.   <listener>
>> 8.     <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
>> 9.   </listener>
>> 10.   <session-config>
>> 11.     <session-timeout>
>> 12.       30
>> 13.     </session-timeout>
>> 14.   </session-config>
>> 15. </web-app>
>> 
>> 
>> 
>> The post parameters are corrupted by the listener.
>> 
>> 
>> 
>> I did enable URIEncoding="UTF-8" in the server.xml file, but this did
>> not make any difference.
>> 
>> 1. <Connector executor="tomcatThreadPool"
>> 2.            port="8080" protocol="HTTP/1.1"
>> 3.            connectionTimeout="20000"
>> 4.            redirectPort="8443"
>> 5.            URIEncoding="UTF-8"/>
>> 
>> 
>> 
>> With the listener enabled data like "Soße" is received as "SoÃY"e",
>> however once the listerner is removed everything works as expected.
>> 
> 
> 1. I hope you have seen the FAQ.
> http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
> 
> and
> http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Set_Character_Encoding_Filter
> 
> 2. Try to run with a debugger
> http://wiki.apache.org/tomcat/FAQ/Developing#Debugging
> 
> with a breakpoint in org.apache.catalina.connector.Request#parseParameters()
> 
> I guess that there is some component that calls one of getParameter()
> methods before your request.setCharacterEncoding("UTF-8") and thus the
> default of ISO-8859-1 is effective.
> 
> 3. What exact version of Tomcat 7.0.x are you using?
> 
> Best regards,
> Konstantin Kolinko
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
> 


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message