0 Replies Latest reply on Jan 25, 2005 12:24 PM by jjm

    JBoss/Tomcat not properly reading UTF8 HTTP (POST) parameter

    jjm Newbie

      Hello All,

      Hopefully this hasn't been addressed already, I did a quick search and wasn't seeing anything addressing this specifically.

      We're using JBoss fronted by Apache HTTPD 2.0.52. Found a strange bug. When a HTTP parameter (in this case, it is a submit button) is being posted with a non-ascii character (0xF3, lowercase o with acute). This is actually being posted as UTF8 (0xc3b3), and either JBoss or more likely Tomcat is
      not converting these two bytes to a single character (\u00f3). I want the value to be sent in UTF8, so this is correct. The problem is that somewhere along the line the data is not being interpreted as UTF8 and being read as two characters.

      If I use a GET, it will still fail. However, if I remove Apache from the picture, and use the URIEncoding attribute as follows:

      <Connector port="80" address="${jboss.bind.address}"
       maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
       enableLookups="false" redirectPort="8443" acceptCount="100"
       connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>

      It will work with a GET. Still will not work with POST. I switched back to using Apache, and changed the AJP connector to also use the URIEncoding attribute. This fixed the GET, but POST is still not working properly.

      Other than changing our forms to use a GET, does anyone know of a solution?

      We're using JBoss 4.0.0, Httpd 2.0.52, and mod_jk2 (not sure of exact version).

      Any suggestions?