tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Schumacher <>
Subject Re: DefaultServlet and default character encoding
Date Fri, 18 Jun 2010 11:50:40 GMT
On Fri, 18 Jun 2010 12:50:31 +0200, Rainer Jung <>
> On 18.06.2010 11:04, Felix Schumacher wrote:
>> On Thu, 17 Jun 2010 19:32:36 +0400, Konstantin Kolinko
>> <>  wrote:
>>> 2010/6/17 Felix Schumacher<>:
>>>> For the moment I have written a filter, which sets a default
>> as
>>>> soon as Response.setContentType(String type) is called and
>>>> type.startsWith("text/"). That works for the moment, but I would
>>>> the
>>>> solution described in above thread.
>>> I know that setting charset in a mime-mapping works, e.g.:
>>>      <mime-mapping>
>>>          <extension>htm</extension>
>>>          <mime-type>text/html;charset=iso-8859-1</mime-type>
>>>      </mime-mapping>
>>>      <mime-mapping>
>>>          <extension>html</extension>
>>>          <mime-type>text/html;charset=iso-8859-1</mime-type>
>>>      </mime-mapping>
>>> Note, that it would be better if the mime type set by a HTTP header
>>> and the one provided by HTML tag match strictly (case sensitively).
>>> Otherwise some browsers will start guessing.  IIRC, the HTML spec says
>>> that the HTTP header takes precedence, but not all browsers follow it
>>> strictly.
>> I will look into this one.
>>> Also there is AddDefaultCharsetFilter in Tomcat 7. It is similar to
>>> what you are doing, see its JavaDoc and source code.
>> Yes, my filter looked like a twin, with the exception, that I called
>> super.setCharacterEncoding(defaultEncoding) instead of manipulating the
>> content-type directly (and of course that defaultEncoding is different
>> super.getCharacterEncoding() which would yield iso-8859-1).
>> I could extend that filter to my needs. Should I file a enhancement
>> request for that?
>>>> apache httpd thinks it would be better to append a
>>>> charset to the response
>>> I wonder, if there is a way to improve your Apache HTTPD
>> I tried to let apache httpd now that in location /webapp the default
>> charset was different from iso-8859-1. But mod_jk ignored my pledges :(
>> Even so I think DefaultServlet should be able to set a charset if
>> configured to.
> How did you do that in Apache? Did you use
> and if so, how exactly?
I placed the following into the config for the corresponding virtual host:

<Location /webapp> 
   AddDefaultCharset utf-8

Yesterday after restart of httpd I found no difference in behaviour...
Now the directive does work as expected.

So mod_jk/httpd can be configured to work around the issue.
Maybe I saw an old page from some sort of cache/proxy :(

> You can switch JkLogLevel on a system with low load to "debug", then 
> mod_jk will log all response headers it received from Tomcat.
> mod_jk itself takes the Content-Type header received from tomcat, 
> extracts its full value and applies it to the Apache response via 
> ap_set_content_type(). Apache later applies any configured default 
> charset via ap_http_header_filter() in ap_http_header_filter(). At least

> that's what I expect to happen.
> Regards,
> Rainer
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message