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.

Reply via email to