Hi,

The following JSP presents a well-known problem found all over the web 
regarding GET form submissions not encoding form parameters properly. The issue 
does not exist with POST. 

I have read just about every article on the web about this issue, and the below 
JSP incorporates all of the solutions. 

However, it still does not work and I wonder having seen a few suggestions that 
this could be the fault of Tomcat, whether there is any truth in this, since an 
equivalent ASP test does not exhibit the issue.

I have used the below JSP test with both a SetCharacterEncodingFilter in front, 
and without (this is also catered for by the request.setCharacterEncoding 
call). 

Everything reads UTF-8 except when you submit the word Amélie into the form, 
the output is broken. Interestingly, the QENC string which converts the 
request.getParameter to UTF-8 fixes the string. This is impracticle I would 
have thought and should be converted by Tomcat given the request encoding which 
is correctly set.

My question - is this a Tomcat bug, a Tomcat caveat, or my own silly fault?

Thanks, Allistair

== snip ==

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page language="java" contentType="text/html;charset=UTF-8" %>
<% request.setCharacterEncoding("UTF-8"); %>
<html>
  <head>
    <title>Form Encoding Test with - Amélie</title>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
  </head>
  <body>
        <p>Submit the form with <b>Amélie</b></p>
        <p>request.getCharacterEncoding() : <%= request.getCharacterEncoding() 
%></p>
    <p>response.getCharacterEncoding() : <%= response.getCharacterEncoding() 
%></p>
    <p>
    <%
    String q = request.getParameter("q");
        String qenc = "";
        if (q != null) {
                qenc = new String(request.getParameter("q").getBytes(), 
"UTF-8");
        } else {
                q = "";
        }
    %>
        <form method="get" action="/jsp/enctest/index.jsp" 
accept-charset="UTF-8">
                <input name="q" type="text" value="<%= q %>" />
                <input type="submit" value="Go" />
        </form>
        <p>new String(request.getParameter("q").getBytes(), "UTF-8") : <%= qenc 
%></p>    
  </body>
</html>


<FONT SIZE=1 FACE="VERDANA,ARIAL" COLOR=BLUE> 
-------------------------------------------------------
QAS Ltd.
Registered in England: No 2582055
Registered in Australia: No 082 851 474
-------------------------------------------------------
</FONT> <FONT SIZE=1 FACE="VERDANA,ARIAL" COLOR=BLACK> 
Disclaimer:  The information contained within this e-mail is confidential and 
may be privileged. This email is intended solely for the named recipient only; 
if you are not authorised you must not disclose, copy, distribute, or retain 
this message or any part of it. If you have received this message in error 
please contact the sender at once so that we may take the appropriate action 
and avoid troubling you further.  Any views expressed in this message are those 
of the individual sender.  QAS Limited has the right lawfully to record, 
monitor and inspect messages between its employees and any third party.  Your 
messages shall be subject to such lawful supervision as QAS Limited deems to be 
necessary in order to protect its information, its interests and its 
reputation.  

Whilst all efforts are made to safeguard Inbound and Outbound emails, QAS 
Limited cannot guarantee that attachments are virus free or compatible with 
your systems and does not accept any liability in respect of viruses or 
computer problems experienced.
</FONT>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to