Hi Lubos, I received your suggested 'filter' solution a couple of months ago in response to a problem I was having with tapestry and UTF-8, I didn't use it afterwards as I just used an image instead of the desired text, but now that I'm internationalising my web application, I'd like to fix this problem for once and for all.
I've tried/attempted your solution, but to no avail, perhaps you could take a quick look at my implementation and check to see that I haven't done something stupid! Regards, Brian. In web.xml (just the relevant entries are shown) <web-app> <context-param> <param-name>PARAMETER_ENCODING</param-name> <param-value>UTF-8</param-value> </context-param> <filter> <filter-name>meta-filter</filter-name> <filter-class>com.mycompany.MetaFilter</filter-class> </filter> <filter-mapping> <servlet-name>my_project</servlet-name> <filter-name>meta-filter</filter-name> </filter-mapping> <servlet-mapping> <servlet-name>my_project</servlet-name> <url-pattern>/app</url-pattern> </servlet-mapping> </web-app> The filter class I created based on your example . . . package com.mycompany; 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; import javax.servlet.http.HttpServletRequest; public class MetaFilter implements Filter { FilterConfig config; public void init(FilterConfig config) { this.config = config; } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { try { HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; servletRequest.setCharacterEncoding("UTF-8"); servletResponse.setContentType( "text/html; charset=UTF-8" ); } finally { //do nothing; } } public void destroy() { } } I'm sure I missing something in the above, the httpServletRequest I create is never read/used, perhaps you could give me some pointers as to how I would finish off this class? Thanks again for all your help . . . On 1/31/06, Lubos and Alena Pochman <[EMAIL PROTECTED]> wrote:
I had the same problem with Tapestry 3.02 and I think it is still in 4.0. Somehow Tapestry doesnt' set up content type properly. Looking at html source from Tapestry, the <meta> for content type is not the first <meta> but the second <meta> in the <header>. I have read somewhere, that content type <meta> must be the first in <header> otherwise it is ignore. I came with workaround. I use web-app <filter> and in that I force utf-8: public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { try { HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; servletRequest.setCharacterEncoding("UTF-8"); servletResponse.setContentType( "text/html; charset=UTF-8" ); It is ugly but it works. Lubos