Konstantin Kolinko wrote:
> Thank you for detailed explanation.
> 
> My analysis is the following:
> hres.setLocale(locale);
> call ->  o.a.c.Response.setLocale() -> 
> o.a.c.connector.ResponseBase.setLocale()
> 
> In o.a.c.connector.ResponseBase.setLocale() it calls
> CharsetMapper.getCharset(locale)
> and updates the contentType header.
> 
> The problem is with those locales for which CharsetMapper.getCharset(locale)
> returns null.  There is an error in ResponseBase.setLocale() that it will set
>  contentType = contentType + ";charset=null"
> in those cases. How about fixing that?
> 
> My understanding is that it will solve the issue, and won't change the
> error page encoding for existing applications.
> 
> We cannot fix CharsetMapper, because it can be overwritten, but we can
> fix those places where it is called.
> 
> Here is the patch:
> http://people.apache.org/~kkolinko/patches/2009-06-12_tc41_CharsetMapper.patch

Yep, that would also fix the issue. However, that patch changes the
behaviour of setLocale(). Whilst it shouldn't cause a regression there
is a risk that it might for some applications.

The 'right' / 'proper' fix for TC4 would be to implement
STRICT_SERVLET_COMPLIANCE and in particular, the change to getWriter().
Again, there is the risk of regression with this approach.

TC6 and TC5 already use UTF-8 for Tomcat's default error page. The
proposed TC4 page brings TC4 into line with TC5 and TC6.

My personal preference is for the small as possible 'band-aid' approach
to minimise the regression risk.

Mark



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to