It's true, although servlet filter is not pure struts
method, but it is used to solve character-encoding
widely in struts framework. 


--- Jos開Gustavo_Zagato
<[EMAIL PROTECTED]> wrote:
> Hi !
> 
>       I don't if it will fit into your needs but, to
> handler UTF-8 I
> build a serverlet filter with handles all encode /
> Decode operations. As
> far as I know this approach is not a pure Struts
> solution but works
> really fine !
> I didn't test with a upload form like yours, but
> it&#25263; a shot !
> 
> Regards
> 
>   Jos?Gustavo Zagato Rosa
> System Analyst - Atos Origin
> [EMAIL PROTECTED]
> 
> 
> -----Original Message-----
> From: Paul Barry [mailto:[EMAIL PROTECTED] 
> Sent: ter&#37872;-feira, 28 de outubro de 2003 12:07
> To: [EMAIL PROTECTED]
> Subject: Problem with UTF-8 characters in a
> mutlipart/form-data encoded
> form
> 
> I am using Struts 1.1 in an application that needs
> to support the UTF-8
> character set.  I am using Resin 2.1.10 with 
> character-encoding="UTF-8", and on most of my forms
> this seems to work
> just fine.  I am having problems with forms that 
> have to use the multipart/form-data enctype for
> handling uploading
> files.  If I print out the value of a text element
> in 
> an html:form where the enctype is not set at all
> (which ends up using
> application/x-www-form-urlencoded), using UTF-8 
> characters works fine.  This is what I get:
> 
> INFO - test.TestAction - The value is: ?> 
> Here is what the actual HTTP request that gets sent
> to the server looks
> like:
> 
> --- Start HTTP Request
>
-----------------------------------------------------
> POST /testForm.do HTTP/1.1
> Accept: image/gif, image/x-xbitmap, image/jpeg,
> image/pjpeg,
> application/x-shockwave-flash, */*
> Referer: http://pbdesktop/test.do
> Accept-Language: en-us
> Content-Type: application/x-www-form-urlencoded
> Accept-Encoding: gzip, deflate
> User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;
> Windows NT 5.0)
> Host: pbdesktop
> Content-Length: 11
> Connection: Keep-Alive
> Cache-Control: no-cache
> Cookie: SERVER=op; locale=en_US;
> JSESSIONID=aoUCARQpqsLd
> 
> test=%C3%AD
> --- End HTTP Request
>
------------------------------------------------------
> 
> But if I modify my html:form to use
> enctype="multipart/form-data", I get
> this:
> 
> INFO - test.TestAction - The value is: A?> 
> And the HTTP request looks like this:
> 
> --- Start HTTP Request
>
-----------------------------------------------------
> POST /testForm.do HTTP/1.1
> Accept: image/gif, image/x-xbitmap, image/jpeg,
> image/pjpeg,
> application/x-shockwave-flash, */*
> Referer: http://pbdesktop/test.do
> Accept-Language: en-us
> Content-Type: multipart/form-data;
> boundary=---------------------------7d319628600e4
> Accept-Encoding: gzip, deflate
> User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;
> Windows NT 5.0)
> Host: pbdesktop
> Content-Length: 141
> Connection: Keep-Alive
> Cache-Control: no-cache
> Cookie: SERVER=op; locale=en_US;
> JSESSIONID=aoUCARQpqsLd
> 
> -----------------------------7d319628600e4
> Content-Disposition: form-data; name="test"
> 
> &#38086;
> -----------------------------7d319628600e4-
> --- End HTTP Request
>
------------------------------------------------------
> 
> It looks as if the character is already messed up
> before it even gets to
> the servlet container.  There are messages in 
> the mailing list archive that discuss this problem,
> but I didn't see a
> solution.  What is the best way to handle UTF-8 
> characters in a multipart/form-data encoded form?
> 
> Here is the code that I am testing with:
> 
> /test/test.jsp:
> <%@ taglib uri="WEB-INF/taglib/struts-html.tld"
> prefix="html" %>
> <%@ taglib uri="WEB-INF/taglib/struts-bean.tld"
> prefix="bean" %>
> 
> <html:html>
>    <body>
>      <html:form action="testForm.do"
> enctype="multipart/form-data">
>        <html:text property="test" />
>        <html:submit />
>      </html:form>
>    </body>
> </html:html>
> 
> Relavent parts of struts-config.xml:
> <struts-config>
> 
>    <form-beans>
>      <form-bean name="testForm"
> type="test.TestActionForm" />
>    </form-beans>
> 
>    <action-mappings>
>      <action path="/test"
> type="org.apache.struts.actions.ForwardAction"
> parameter="/test/test.jsp" />
>      <action path="/testForm" type="test.TestAction"
> name="testForm"
> input="/test.do" scope="request" />
>    </action-mappings>
> 
>    <controller contentType="text/html;charset=UTF-8"
> />
> 
> <struts-config/>
> 
> test.TestAction:
> package test;
> 
> import javax.servlet.http.*;
> import org.apache.commons.logging.*;
> import org.apache.struts.action.*;
> 
> public class TestAction extends Action {
>       private static final Log log =
> LogFactory.getLog(TestAction.class);
>       
>       public ActionForward execute(
>                       ActionMapping mapping,
>                       ActionForm pform,
>                       HttpServletRequest request,
>                       HttpServletResponse response)
>                       throws Exception {
>               TestActionForm form = (TestActionForm)pform;
>               log.info("The value is: "+form.getTest());
>               return null;
>       }
> }
> 
> test.TestActionForm:
> package test;
> 
> import org.apache.struts.action.ActionForm;
> 
> public class TestActionForm extends ActionForm {
>       private String test;
>       public String getTest() { return test;  }
>       public void setTest(String string) { test = string;
> }
> }
> 
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> 
> 
> 
> 
>
---------------------------------------------------------------------
> 
=== message truncated ===


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

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

Reply via email to