tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ben Bookey" <ben.boo...@gistec-online.de>
Subject AW: JSP/HTML Encoding
Date Tue, 31 Aug 2004 16:06:19 GMT
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_HOME%;-Djava.endo
rsed.dirs=%CATALINA_HOME%\common\endorsed";-Xrs;-Xms128m;-Xmx384m;-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.SetCharacterEncodingFilter</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


Mime
View raw message