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.