You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@velocity.apache.org by David Sperling <zz...@yahoo.com> on 2005/05/30 03:10:26 UTC

encoding ok with jsp but not with velocity

Hi-

I'm usualy pretty good at fixing encoding problems but
this one has me stumped.

I made the following test pages that link to struts
action.  The jsp doesn't turn my UTF-8 japanese to
garbage but my velocity page does.  

I'm using a UTF-8 filter in my web.xml:

<!-- Example filter to set character encoding on each
request -->
    <filter>
        <filter-name>Set Character
Encoding</filter-name>
       
<filter-class>com.mydomain.coupon.filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>

<!-- Example filter mapping to apply the "Set
Character Encoding" filter
     to *all* requests processed by this web
application -->

    <filter-mapping>
        <filter-name>Set Character
Encoding</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

Then I set the velocity.properties file to UTF-8:



#----------------------------------------------------------------------------
# T E M P L A T E  E N C O D I N G
#----------------------------------------------------------------------------

#input.encoding=ISO-8859-1
#output.encoding=ISO-8859-1

input.encoding=UTF-8
output.encoding=UTF-8
default.contentType=text/html; charset=UTF-8


Here are my test pages:
#Not working Velocity Page
$request.setCharacterEncoding("UTF-8")
<html>
<head>

<TITLE>Velocity Test Page</TITLE>
<META http-equiv=Content-Type content="text/html;
charset=UTF-8">

</head>
   <body bgcolor="#ffffff">


     <form
action="$link.setAction('AddOutdoorReservation')" >
           <table border="0" cellspacing="5"
cellpadding="0" align="center">
               <tr>
                   <td nowrap>email</td>
                   <td><input type="text" name="email"
size="24" tabindex="1" accesskey="1"></td>
               </tr>
               <tr>
                   <td nowrap>Outdoor Event Form
Menu</td>
                   <td>
                   <select name="event" size="1"
tabindex="3">
                     <option value="select"
selected>Outdoor Form Event</option>
                     <option>��ե��ƥ���</option>
                   </select>
                   </td>
               </tr>
           </table>
               <br>
               <input type="submit"
name="submitButtonName" value="Submit" tabindex="7">
     </form>
   </body>
  </html>

# Working JSP Page
<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/tags/struts-tiles" prefix="tiles" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>


<% request.setCharacterEncoding("UTF-8"); %>

<html:html locale="true">
<head>

<TITLE>JSP Test Page</TITLE>
<META http-equiv=Content-Type content="text/html;
charset=UTF-8">

</head>
   <body bgcolor="#ffffff">


   <html:form action="/AddOutdoorReservation.do"
enctype="multipart/form-data">
           <table border="0" cellspacing="5"
cellpadding="0" align="center">
               <tr>
                   <td nowrap>email</td>
                   <td><html:text size="32"
property="email"/></td>
               </tr>
               <tr>
                   <td nowrap>Outdoor Event Form
Menu</td>
                   <td>
                   <select name="event" size="1"
tabindex="3">
                     <option value="select"
selected>Outdoor Form Event</option>
                     <option>��ե��ƥ���</option>
                   </select>
    </td>
               </tr>
           </table>
               <br>
               <input type="submit"
name="submitButtonName" value="Submit" tabindex="7">
     </html:form>
   </body>
  </html:html>

Any ideas or pointers would be greatly appreciated:


Cheers,

David 



		
__________________________________ 
Do you Yahoo!? 
Yahoo! Small Business - Try our new Resources site
http://smallbusiness.yahoo.com/resources/

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


Re: encoding ok with jsp but not with velocity

Posted by David Sperling <zz...@yahoo.com>.
I figured out the problem.

After adding enctype and method tags to the form tag
everything worked fine.
/******************************************/
Was:

 <form
 action="$link.setAction('AddOutdoorReservation')" >

/******************************************/
Now:

     <form enctype="multipart/form-data"  
            method="post" 
              name="OutdoorReservationFormBean" 
           
action="$link.setAction("AddOutdoorReservation")">

/******************************************/

Cheers,

David
--- David Sperling <zz...@yahoo.com> wrote:

> Hi-
> 
> I'm usualy pretty good at fixing encoding problems
> but
> this one has me stumped.
> 
> I made the following test pages that link to struts
> action.  The jsp doesn't turn my UTF-8 japanese to
> garbage but my velocity page does.  
> 
> I'm using a UTF-8 filter in my web.xml:
> 
> <!-- Example filter to set character encoding on
> each
> request -->
>     <filter>
>         <filter-name>Set Character
> Encoding</filter-name>
>        
>
<filter-class>com.mydomain.coupon.filters.SetCharacterEncodingFilter</filter-class>
>         <init-param>
>             <param-name>encoding</param-name>
>             <param-value>UTF-8</param-value>
>         </init-param>
>     </filter>
> 
> <!-- Example filter mapping to apply the "Set
> Character Encoding" filter
>      to *all* requests processed by this web
> application -->
> 
>     <filter-mapping>
>         <filter-name>Set Character
> Encoding</filter-name>
>         <url-pattern>/*</url-pattern>
> </filter-mapping>
> 
> Then I set the velocity.properties file to UTF-8:
> 
> 
> 
>
#----------------------------------------------------------------------------
> # T E M P L A T E  E N C O D I N G
>
#----------------------------------------------------------------------------
> 
> #input.encoding=ISO-8859-1
> #output.encoding=ISO-8859-1
> 
> input.encoding=UTF-8
> output.encoding=UTF-8
> default.contentType=text/html; charset=UTF-8
> 
> 
> Here are my test pages:
> #Not working Velocity Page
> $request.setCharacterEncoding("UTF-8")
> <html>
> <head>
> 
> <TITLE>Velocity Test Page</TITLE>
> <META http-equiv=Content-Type content="text/html;
> charset=UTF-8">
> 
> </head>
>    <body bgcolor="#ffffff">
> 
> 
>      <form
> action="$link.setAction('AddOutdoorReservation')" >
>            <table border="0" cellspacing="5"
> cellpadding="0" align="center">
>                <tr>
>                    <td nowrap>email</td>
>                    <td><input type="text"
> name="email"
> size="24" tabindex="1" accesskey="1"></td>
>                </tr>
>                <tr>
>                    <td nowrap>Outdoor Event Form
> Menu</td>
>                    <td>
>                    <select name="event" size="1"
> tabindex="3">
>                      <option value="select"
> selected>Outdoor Form Event</option>
>                      <option>��ե��ƥ���</option>
>                    </select>
>                    </td>
>                </tr>
>            </table>
>                <br>
>                <input type="submit"
> name="submitButtonName" value="Submit" tabindex="7">
>      </form>
>    </body>
>   </html>
> 
> # Working JSP Page
> <%@page contentType="text/html; charset=UTF-8" %>
> <%@ taglib uri="/tags/struts-tiles" prefix="tiles"
> %>
> <%@ taglib uri="/tags/struts-html" prefix="html" %>
> <%@ taglib uri="/tags/struts-logic" prefix="logic"
> %>
> <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
> 
> 
> <% request.setCharacterEncoding("UTF-8"); %>
> 
> <html:html locale="true">
> <head>
> 
> <TITLE>JSP Test Page</TITLE>
> <META http-equiv=Content-Type content="text/html;
> charset=UTF-8">
> 
> </head>
>    <body bgcolor="#ffffff">
> 
> 
>    <html:form action="/AddOutdoorReservation.do"
> enctype="multipart/form-data">
>            <table border="0" cellspacing="5"
> cellpadding="0" align="center">
>                <tr>
>                    <td nowrap>email</td>
>                    <td><html:text size="32"
> property="email"/></td>
>                </tr>
>                <tr>
>                    <td nowrap>Outdoor Event Form
> Menu</td>
>                    <td>
>                    <select name="event" size="1"
> tabindex="3">
>                      <option value="select"
> selected>Outdoor Form Event</option>
>                      <option>��ե��ƥ���</option>
>                    </select>
>     </td>
>                </tr>
>            </table>
>                <br>
>                <input type="submit"
> name="submitButtonName" value="Submit" tabindex="7">
>      </html:form>
>    </body>
>   </html:html>
> 
> Any ideas or pointers would be greatly appreciated:
> 
> 
> Cheers,
> 
> David 
> 
> 
> 
> 		
> __________________________________ 
> Do you Yahoo!? 
> Yahoo! Small Business - Try our new Resources site
> http://smallbusiness.yahoo.com/resources/
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> 
> 



		
__________________________________ 
Do you Yahoo!? 
Yahoo! Mail - Find what you need with new enhanced search. 
http://info.mail.yahoo.com/mail_250

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


Re: encoding ok with jsp but not with velocity

Posted by Simon Christian <si...@stoutstick.com>.
Hi David,

I can't really comment on most of your query, but I notice that the form 
in your JSP has the 'enctype="multipart/form-data"' attribute, but the 
equivalent VM page doesn't appear to have the same attribute. Might that 
be causing the difference?

- simon

David Sperling wrote:
> After working on this for a couple days I've got some
> new info:
> 
> 1. clicking submit from the jsp and vm pages causes
> request.getContentType()) to produce the following:
> 
> working jsp: multipart/form-data; boundary=...
> broken   vm: null
> 
> 2. velocity log shows the following:
> [info] VelocityViewServlet: Default content-type is:
> text/html; charset=UTF-8 but Action classes report
> null as ContentType
> 
> 3. Can fix the problem with:
>       
>       OutdoorReservationForm outdoorReservation =
> (OutdoorReservationForm) form;
>       String raw = outdoorReservation.getEvent();
>       String clean = new
> String(raw.getBytes("ISO-8859-1"), "UTF-8");
> 
> But it would be too time consuming to do this on each
> and every form attribute.
> 
> Any ideas on how to fix my velocity submissions so I
> don't have to convert form attributes 1 by 1?  
> 
> Cheers,
> 
> David
> 
> 
> 
> --- David Sperling <zz...@yahoo.com> wrote:
> 
> 
>>Hi-
>>
>>I'm usualy pretty good at fixing encoding problems
>>but
>>this one has me stumped.
>>
>>I made the following test pages that link to struts
>>action.  The jsp doesn't turn my UTF-8 japanese to
>>garbage but my velocity page does.  
>>
>>I'm using a UTF-8 filter in my web.xml:
>>
>><!-- Example filter to set character encoding on
>>each
>>request -->
>>    <filter>
>>        <filter-name>Set Character
>>Encoding</filter-name>
>>       
>>
> 
> <filter-class>com.mydomain.coupon.filters.SetCharacterEncodingFilter</filter-class>
> 
>>        <init-param>
>>            <param-name>encoding</param-name>
>>            <param-value>UTF-8</param-value>
>>        </init-param>
>>    </filter>
>>
>><!-- Example filter mapping to apply the "Set
>>Character Encoding" filter
>>     to *all* requests processed by this web
>>application -->
>>
>>    <filter-mapping>
>>        <filter-name>Set Character
>>Encoding</filter-name>
>>        <url-pattern>/*</url-pattern>
>></filter-mapping>
>>
>>Then I set the velocity.properties file to UTF-8:
>>
>>
>>
>>
> 
> #----------------------------------------------------------------------------
> 
>># T E M P L A T E  E N C O D I N G
>>
> 
> #----------------------------------------------------------------------------
> 
>>#input.encoding=ISO-8859-1
>>#output.encoding=ISO-8859-1
>>
>>input.encoding=UTF-8
>>output.encoding=UTF-8
>>default.contentType=text/html; charset=UTF-8
>>
>>
>>Here are my test pages:
>>#Not working Velocity Page
>>$request.setCharacterEncoding("UTF-8")
>><html>
>><head>
>>
>><TITLE>Velocity Test Page</TITLE>
>><META http-equiv=Content-Type content="text/html;
>>charset=UTF-8">
>>
>></head>
>>   <body bgcolor="#ffffff">
>>
>>
>>     <form
>>action="$link.setAction('AddOutdoorReservation')" >
>>           <table border="0" cellspacing="5"
>>cellpadding="0" align="center">
>>               <tr>
>>                   <td nowrap>email</td>
>>                   <td><input type="text"
>>name="email"
>>size="24" tabindex="1" accesskey="1"></td>
>>               </tr>
>>               <tr>
>>                   <td nowrap>Outdoor Event Form
>>Menu</td>
>>                   <td>
>>                   <select name="event" size="1"
>>tabindex="3">
>>                     <option value="select"
>>selected>Outdoor Form Event</option>
>>                     <option>¥é¥Õ¥£¥Æ¥£¥ó¥°</option>
>>                   </select>
>>                   </td>
>>               </tr>
>>           </table>
>>               <br>
>>               <input type="submit"
>>name="submitButtonName" value="Submit" tabindex="7">
>>     </form>
>>   </body>
>>  </html>
>>
>># Working JSP Page
>><%@page contentType="text/html; charset=UTF-8" %>
>><%@ taglib uri="/tags/struts-tiles" prefix="tiles"
>>%>
>><%@ taglib uri="/tags/struts-html" prefix="html" %>
>><%@ taglib uri="/tags/struts-logic" prefix="logic"
>>%>
>><%@ taglib uri="/tags/struts-bean" prefix="bean" %>
>>
>>
>><% request.setCharacterEncoding("UTF-8"); %>
>>
>><html:html locale="true">
>><head>
>>
>><TITLE>JSP Test Page</TITLE>
>><META http-equiv=Content-Type content="text/html;
>>charset=UTF-8">
>>
>></head>
>>   <body bgcolor="#ffffff">
>>
>>
>>   <html:form action="/AddOutdoorReservation.do"
>>enctype="multipart/form-data">
>>           <table border="0" cellspacing="5"
>>cellpadding="0" align="center">
>>               <tr>
>>                   <td nowrap>email</td>
>>                   <td><html:text size="32"
>>property="email"/></td>
>>               </tr>
>>               <tr>
>>                   <td nowrap>Outdoor Event Form
>>Menu</td>
>>                   <td>
>>                   <select name="event" size="1"
>>tabindex="3">
>>                     <option value="select"
>>selected>Outdoor Form Event</option>
>>                     <option>¥é¥Õ¥£¥Æ¥£¥ó¥°</option>
>>                   </select>
>>    </td>
>>               </tr>
>>           </table>
>>               <br>
>>               <input type="submit"
>>name="submitButtonName" value="Submit" tabindex="7">
>>     </html:form>
>>   </body>
>>  </html:html>
>>
>>Any ideas or pointers would be greatly appreciated:
>>
>>
>>Cheers,
>>
>>David 
>>
>>
>>
>>		
>>__________________________________ 
>>Do you Yahoo!? 
>>Yahoo! Small Business - Try our new Resources site
>>http://smallbusiness.yahoo.com/resources/
>>
>>
> 
> ---------------------------------------------------------------------
> 
>>To unsubscribe, e-mail:
>>velocity-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail:
>>velocity-user-help@jakarta.apache.org
>>
>>
> 
> 
> 
> 
> 		
> __________________________________ 
> Do you Yahoo!? 
> Yahoo! Small Business - Try our new Resources site
> http://smallbusiness.yahoo.com/resources/
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: velocity-user-help@jakarta.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org


Re: encoding ok with jsp but not with velocity

Posted by David Sperling <zz...@yahoo.com>.
After working on this for a couple days I've got some
new info:

1. clicking submit from the jsp and vm pages causes
request.getContentType()) to produce the following:

working jsp: multipart/form-data; boundary=...
broken   vm: null

2. velocity log shows the following:
[info] VelocityViewServlet: Default content-type is:
text/html; charset=UTF-8 but Action classes report
null as ContentType

3. Can fix the problem with:
      
      OutdoorReservationForm outdoorReservation =
(OutdoorReservationForm) form;
      String raw = outdoorReservation.getEvent();
      String clean = new
String(raw.getBytes("ISO-8859-1"), "UTF-8");

But it would be too time consuming to do this on each
and every form attribute.

Any ideas on how to fix my velocity submissions so I
don't have to convert form attributes 1 by 1?  

Cheers,

David



--- David Sperling <zz...@yahoo.com> wrote:

> Hi-
> 
> I'm usualy pretty good at fixing encoding problems
> but
> this one has me stumped.
> 
> I made the following test pages that link to struts
> action.  The jsp doesn't turn my UTF-8 japanese to
> garbage but my velocity page does.  
> 
> I'm using a UTF-8 filter in my web.xml:
> 
> <!-- Example filter to set character encoding on
> each
> request -->
>     <filter>
>         <filter-name>Set Character
> Encoding</filter-name>
>        
>
<filter-class>com.mydomain.coupon.filters.SetCharacterEncodingFilter</filter-class>
>         <init-param>
>             <param-name>encoding</param-name>
>             <param-value>UTF-8</param-value>
>         </init-param>
>     </filter>
> 
> <!-- Example filter mapping to apply the "Set
> Character Encoding" filter
>      to *all* requests processed by this web
> application -->
> 
>     <filter-mapping>
>         <filter-name>Set Character
> Encoding</filter-name>
>         <url-pattern>/*</url-pattern>
> </filter-mapping>
> 
> Then I set the velocity.properties file to UTF-8:
> 
> 
> 
>
#----------------------------------------------------------------------------
> # T E M P L A T E  E N C O D I N G
>
#----------------------------------------------------------------------------
> 
> #input.encoding=ISO-8859-1
> #output.encoding=ISO-8859-1
> 
> input.encoding=UTF-8
> output.encoding=UTF-8
> default.contentType=text/html; charset=UTF-8
> 
> 
> Here are my test pages:
> #Not working Velocity Page
> $request.setCharacterEncoding("UTF-8")
> <html>
> <head>
> 
> <TITLE>Velocity Test Page</TITLE>
> <META http-equiv=Content-Type content="text/html;
> charset=UTF-8">
> 
> </head>
>    <body bgcolor="#ffffff">
> 
> 
>      <form
> action="$link.setAction('AddOutdoorReservation')" >
>            <table border="0" cellspacing="5"
> cellpadding="0" align="center">
>                <tr>
>                    <td nowrap>email</td>
>                    <td><input type="text"
> name="email"
> size="24" tabindex="1" accesskey="1"></td>
>                </tr>
>                <tr>
>                    <td nowrap>Outdoor Event Form
> Menu</td>
>                    <td>
>                    <select name="event" size="1"
> tabindex="3">
>                      <option value="select"
> selected>Outdoor Form Event</option>
>                      <option>��ե��ƥ���</option>
>                    </select>
>                    </td>
>                </tr>
>            </table>
>                <br>
>                <input type="submit"
> name="submitButtonName" value="Submit" tabindex="7">
>      </form>
>    </body>
>   </html>
> 
> # Working JSP Page
> <%@page contentType="text/html; charset=UTF-8" %>
> <%@ taglib uri="/tags/struts-tiles" prefix="tiles"
> %>
> <%@ taglib uri="/tags/struts-html" prefix="html" %>
> <%@ taglib uri="/tags/struts-logic" prefix="logic"
> %>
> <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
> 
> 
> <% request.setCharacterEncoding("UTF-8"); %>
> 
> <html:html locale="true">
> <head>
> 
> <TITLE>JSP Test Page</TITLE>
> <META http-equiv=Content-Type content="text/html;
> charset=UTF-8">
> 
> </head>
>    <body bgcolor="#ffffff">
> 
> 
>    <html:form action="/AddOutdoorReservation.do"
> enctype="multipart/form-data">
>            <table border="0" cellspacing="5"
> cellpadding="0" align="center">
>                <tr>
>                    <td nowrap>email</td>
>                    <td><html:text size="32"
> property="email"/></td>
>                </tr>
>                <tr>
>                    <td nowrap>Outdoor Event Form
> Menu</td>
>                    <td>
>                    <select name="event" size="1"
> tabindex="3">
>                      <option value="select"
> selected>Outdoor Form Event</option>
>                      <option>��ե��ƥ���</option>
>                    </select>
>     </td>
>                </tr>
>            </table>
>                <br>
>                <input type="submit"
> name="submitButtonName" value="Submit" tabindex="7">
>      </html:form>
>    </body>
>   </html:html>
> 
> Any ideas or pointers would be greatly appreciated:
> 
> 
> Cheers,
> 
> David 
> 
> 
> 
> 		
> __________________________________ 
> Do you Yahoo!? 
> Yahoo! Small Business - Try our new Resources site
> http://smallbusiness.yahoo.com/resources/
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> velocity-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail:
> velocity-user-help@jakarta.apache.org
> 
> 



		
__________________________________ 
Do you Yahoo!? 
Yahoo! Small Business - Try our new Resources site
http://smallbusiness.yahoo.com/resources/

---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org