Hi,

I'm deploying a JSF WAR onto Tomcat 6.0.14 under Windows 2003 with JVM
version 1.6.0_03-b05, and using MySQL db.
When I submit a form using POST method, and in the server side take the
fields and send them as an email using JavaMail- i lose the UTF-8 encoded
characters sent in the form.

I suspect it's something with the Tomcat configuration because it does not
happen when I deploy to Sun Application Server 8.2
And another thing, UTF-8 characters hardcoded in the sending email method
are sent just fine.

After a week of web search and reading documentation, what I tried so far:

* * Converting from ISO to UTF: *
String subj = "קורות חיים של "+new
String(((String)nameTextField.getValue()).getBytes("ISO-8859-1"), "UTF-8");
message.setSubject(subj, "utf-8");
Also doesn't work with ISO-8859-8 which is for hebrew, what I'm trying to
type..
*
* Inserting URIEncoding="UTF-8" in the HTTP connector in server.xml. *
*
* Making a filter that will change the request encoding to utf-8:
*

The filter class:

public class ReqEncodingFilter implements Filter {
public void destroy() { }

/** Preform the filtering. */
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}

public void init(FilterConfig config) throws ServletException { }
}

Also tried with the example encoding filter that comes with Tomcat. The
web.xml part:

  <filter>
    <filter-name>Set Character Encoding Filter</filter-name>
    <filter-class>yarivmt.ReqEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>UploadFilter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
  </filter-mapping>
  <filter-mapping>
    <filter-name>Set Character Encoding Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

Also tried with <servlet-name>Faces Servlet</servlet-name> instead of the
url-pattern tag.

* * Making a locale-encoding-mapping-list in web.xml: *
<locale-encoding-mapping-list>
<locale-encoding-mapping>
<locale>en</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
<locale-encoding-mapping>
<locale>he</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
<locale-encoding-mapping>
<locale>ru</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
<locale-encoding-mapping>
<locale>iw</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
<locale-encoding-mapping>
<locale>ru_RU</locale>
<encoding>UTF-8</encoding>
</locale-encoding-mapping>
</locale-encoding-mapping-list>

Any suggestions where to look highly appreciated!

Reply via email to