tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Allistair Crossley" <Allistair.Cross...@QAS.com>
Subject RE: JSP/HTML Encoding
Date Wed, 01 Sep 2004 08:18:47 GMT
The filter I sent you ensures that the "request" is encoded as UTF-8 which includes the euro
character. When you are posting your forms with the euro character I believe your request
is set to ISO-8859-1 and you lose the information, hence the ?. 

pageEncoding just sets the "response" encoding for the client and does not affect the other
direction, i.e client => server.

I am not sure if there is another setting where request character encoding can be set. Perhaps
a more experienced Tomcat user knows this

Cheers!

> -----Original Message-----
> From: Ben Bookey [mailto:ben.bookey@gistec-online.de]
> Sent: 31 August 2004 17:06
> To: Allistair Crossley
> Cc: Tomcat User List
> Subject: AW: JSP/HTML Encoding
> 
> 
> Hi Allistair
> 
> +++ Many thanks for your help. +++
> 
> I apologise when I ask some stupid questions...
> :)
> 
> 1) I am not exactly sure what the benefit is, of seeing if 
> the client is
> posting a utf8 encoded response ? Surely, the server controls 
> anyway what
> encoding the html pages are in so if i post with Latin9 then 
> the client can
> either read it or not. I guess this filter is useful in the 
> case that the
> client browser doesnt support the character encoding 
> (something hopefully
> similar) and posts the request in another character-code. The 
> filter can
> then be used to see if this is happening or not ?
> 
> 
> 2) I would assume that Tomcat( being java) would always use 
> either utf8 or
> utf16 so making the necessity of setting a jvm tomcat 
> property unnecessary ?
> 
> 
> 
> regards
> Ben
> 
> 
> 
> -----Urspr√ľngliche Nachricht-----
> Von: Allistair Crossley [mailto:Allistair.Crossley@QAS.com]
> Gesendet: Dienstag, 31. August 2004 17:32
> An: ben.bookey@gistec-online.de
> Betreff: RE: JSP/HTML Encoding
> 
> 
> Hm, tell a lie Ben...I've just checked our startup options 
> and we don't seem
> to do that anymore ... however if you were to do it ..
> add -Dfile.encoding=utf8
> 
> rem Set extra parameters
> "%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions
> "-Dcatalina.base=%CATALINA_BASE%;-Dcatalina.home=%CATALINA_HOM
> E%;-Djava.endo
> rsed.dirs=%CATALINA_HOME%\common\endorsed";-Xrs;-Xms128m;-Xmx3
> 84m;-Duser.dir
> =%CATALINA_HOME%;-Dfile.encoding=utf8 --StartMode jvm --StopMode jvm
> 
> I think you just need to make sure you use utf8 at the UI. 
> Our databases are
> all Windows Cp1252 which also include the euro symbol.
> 
> I also forgot to mention we put an explicit filter on all 
> inbound requests
> that set the inbound encoding to utf-8. Try adding this 
> filter to web.xml
> 
> 	<filter>
> 	 	<filter-name>Set Character Encoding</filter-name>
> 
> <filter-class>com.qas.newmedia.common.filters.SetCharacterEnco
> dingFilter</fi
> lter-class>
> 	 	<init-param>
> 	  		<param-name>encoding</param-name>
> 	  		<param-value>UTF-8</param-value>
> 	 	</init-param>
> 	</filter>
> 
> with the code ...
> 
> /*
>  * $Header:
> /home/cvs/jakarta-tomcat-4.0/webapps/examples/WEB-INF/classes/
filters/SetCha
> racterEncodingFilter.java,v 1.1 2001/07/24 00:26:55 craigmcc Exp $
>  * $Revision: 1.1 $
>  * $Date: 2001/07/24 00:26:55 $
>  *
>  * 
> ====================================================================
>  *
>  * The Apache Software License, Version 1.1
>  *
>  * Copyright (c) 1999-2001 The Apache Software Foundation.  All rights
>  * reserved.
>  *
>  * Redistribution and use in source and binary forms, with or without
>  * modification, are permitted provided that the following conditions
>  * are met:
>  *
>  * 1. Redistributions of source code must retain the above copyright
>  *    notice, this list of conditions and the following disclaimer.
>  *
>  * 2. Redistributions in binary form must reproduce the above 
> copyright
>  *    notice, this list of conditions and the following disclaimer in
>  *    the documentation and/or other materials provided with the
>  *    distribution.
>  *
>  * 3. The end-user documentation included with the redistribution, if
>  *    any, must include the following acknowlegement:
>  *       "This product includes software developed by the
>  *        Apache Software Foundation (http://www.apache.org/)."
>  *    Alternately, this acknowlegement may appear in the 
> software itself,
>  *    if and wherever such third-party acknowlegements 
> normally appear.
>  *
>  * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
>  *    Foundation" must not be used to endorse or promote 
> products derived
>  *    from this software without prior written permission. For written
>  *    permission, please contact apache@apache.org.
>  *
>  * 5. Products derived from this software may not be called "Apache"
>  *    nor may "Apache" appear in their names without prior written
>  *    permission of the Apache Group.
>  *
>  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
>  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
>  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
>  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
>  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
>  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
>  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
>  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
>  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>  * SUCH DAMAGE.
>  * 
> ====================================================================
>  *
>  * This software consists of voluntary contributions made by many
>  * individuals on behalf of the Apache Software Foundation.  For more
>  * information on the Apache Software Foundation, please see
>  * <http://www.apache.org/>.
>  *
>  * [Additional notices, if required by prior licensing conditions]
>  *
>  */
> 
> 
> package com.qas.newmedia.common.filters;
> 
> 
> import java.io.IOException;
> import javax.servlet.Filter;
> import javax.servlet.FilterChain;
> import javax.servlet.FilterConfig;
> import javax.servlet.ServletException;
> import javax.servlet.ServletRequest;
> import javax.servlet.ServletResponse;
> 
> 
> /**
>  * Example filter that unconditionally sets the character 
> encoding to be
> used
>  * in parsing the incoming request to a value specified by the
>  * <strong>encoding</string> filter initialization parameter 
> in the web app
>  * deployment descriptor (</code>/WEB-INF/web.xml</code>).  
> This filter
> could
>  * easily be extended to be more intelligent about what 
> character encoding
> to
>  * set, based on characteristics of the incoming request 
> (such as the values
>  * of the <code>Accept-Language</code> and 
> <code>User-Agent</code> headers,
>  * or a value stashed in the current user's session).
>  *
>  * @author Craig McClanahan
>  * @version $Revision: 1.1 $ $Date: 2001/07/24 00:26:55 $
>  */
> 
> public class SetCharacterEncodingFilter implements Filter {
> 
> 
>     // ----------------------------------------------------- Instance
> Variables
> 
> 
>     /**
>      * The default character encoding to set for requests 
> that pass through
>      * this filter.
>      */
>     protected String encoding = null;
> 
> 
>     /**
>      * The filter configuration object we are associated 
> with.  If this
> value
>      * is null, this filter instance is not currently configured.
>      */
>     protected FilterConfig filterConfig = null;
> 
> 
>     // 
> --------------------------------------------------------- Public
> Methods
> 
> 
>     /**
>      * Take this filter out of service.
>      */
>     public void destroy() {
> 
>         this.encoding = null;
>         this.filterConfig = null;
> 
>     }
> 
> 
>     /**
>      * Select and set (if specified) the character encoding 
> to be used to
>      * interpret request parameters for this request.
>      *
>      * @param request The servlet request we are processing
>      * @param result The servlet response we are creating
>      * @param chain The filter chain we are processing
>      *
>      * @exception IOException if an input/output error occurs
>      * @exception ServletException if a servlet error occurs
>      */
>     public void doFilter(ServletRequest request, 
> ServletResponse response,
>                          FilterChain chain)
> 	throws IOException, ServletException {
> 
>         // Select and set (if needed) the character encoding 
> to be used
>         String encoding = selectEncoding(request);
>         if (encoding != null)
>             request.setCharacterEncoding(encoding);
> 
> 	// Pass control on to the next filter
>         chain.doFilter(request, response);
> 
>     }
> 
> 
>     /**
>      * Place this filter into service.
>      *
>      * @param filterConfig The filter configuration object
>      */
>     public void init(FilterConfig filterConfig) throws 
> ServletException {
> 
> 	this.filterConfig = filterConfig;
>         this.encoding = filterConfig.getInitParameter("encoding");
> 
>     }
> 
> 
>     // ------------------------------------------------------ 
> Protected
> Methods
> 
> 
>     /**
>      * Select an appropriate character encoding to be used, 
> based on the
>      * characteristics of the current request and/or filter 
> initialization
>      * parameters.  If no character encoding should be set, return
>      * <code>null</code>.
>      * <p>
>      * The default implementation unconditionally returns the value
> configured
>      * by the <strong>encoding</strong> initialization 
> parameter for this
>      * filter.
>      *
>      * @param request The servlet request we are processing
>      */
>     protected String selectEncoding(ServletRequest request) {
> 
>         return (this.encoding);
> 
>     }
> 
> 
> }
> 
> 
> ADC
> 
> > -----Original Message-----
> > From: Ben Bookey [mailto:ben.bookey@gistec-online.de]
> > Sent: 31 August 2004 16:28
> > To: Allistair Crossley; Tomcat Users List
> > Subject: AW: JSP/HTML Encoding
> >
> >
> > Hi Allistair,
> >
> > Where can I set this JVM property exactly ?
> > Thanks in advance.
> > Ben
> > p.s. I am beginning to think that my problem is associated
> > with working with
> > HTML framesets(with possible mixtures of html encoding).
> >
> > -----Urspr√ľngliche Nachricht-----
> > Von: Allistair Crossley [mailto:Allistair.Crossley@QAS.com]
> > Gesendet: Dienstag, 31. August 2004 17:08
> > An: Tomcat Users List; ben.bookey@gistec-online.de
> > Betreff: RE: JSP/HTML Encoding
> >
> >
> > make sure also that you set file.encoding=utf8 in tomcat's
> > startup options
> > so that the jvm also operates in that mode.
> >
> > ADC
> >
> > > -----Original Message-----
> > > From: Ben Bookey [mailto:ben.bookey@gistec-online.de]
> > > Sent: 31 August 2004 16:00
> > > To: Tomcat User List
> > > Subject: JSP/HTML Encoding
> > >
> > >
> > >
> > >
> > > Dear List,
> > >
> > > I am having unexpected results when setting the encoding of my
> > > inputForm.jsp, to iso-8859-15 (changing from
> > > iso-8859-15 to iso-8859-1 will allow me to use the Euro
> > > symbol and a few
> > > others). When i give a Euro symbol into a form input control,
> > > the client
> > > ends up saving a question-mark instead, which is exactly what
> > > happens then I
> > > leave the standard iso-8859-1 encoding(the jsp default). I am
> > > using Tomcat 5
> > > and Internet Explorer 6.x which supports charset=iso-8859-15.
> > >
> > > Here is my jsp page header attributes.
> > >
> > > <%@ page language="java" errorPage="myErrorPage.jsp"
> > > pageEncoding="iso-8859-15" contentType="text/html;
> > > charset=iso-8859-15"%>
> > >
> > > If by setting the above jsp attributes, do I still need to
> > > set (inside the
> > > <html><head> tag) like this ?
> > >
> > > <meta http-equiv="Content-Type" content="text/html;
> > > charset=iso-8859-15"/>
> > >
> > > Another factor which might be affecting the encoding of my
> > > input form, is
> > > that its a page within a frameset, and it could be that the
> > > parent frame
> > > HTML page might be incorrectly pre-determining the encoding
> > > of the whole
> > > frameset overriding the child frame settings.
> > >
> > >
> > > kind regards,
> > > Ben Bookey
> > >
> > >
> > >
> > >
> > 
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: 
> tomcat-user-help@jakarta.apache.org
> > >
> > >
> >
> >
> > <FONT SIZE=1 FACE="VERDANA,ARIAL" COLOR=BLUE>
> > -------------------------------------------------------
> > QAS Ltd.
> > Developers of QuickAddress Software
> > <a href="http://www.qas.com">www.qas.com</a>
> > Registered in England: No 2582055
> > Registered in Australia: No 082 851 474
> > -------------------------------------------------------
> > </FONT>
> >
> >
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 
> 

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


Mime
View raw message