Re: DefaultServlet and default character encoding
On 17/06/2010 15:23, Felix Schumacher wrote: > My Question now is, should I file a bug to enhance DefaultServlet? If so > would it be legal to include the patch from that discussion? That is covered by section 5 of the ALv2, so yes it would be legal. Make sure you correctly attribute it. I'd add the link, not the actual patch. Whilst this would be legal the ASF normally goes further and only includes patches that were intentionally contributed. Even if we legally could, we don't want to use someones code of they don't want us to. In this case - having read the thread - I would say that it was definitely a contribution so would have no problem applying the patch. I would add that if the patch had been added to a new bugzilla item, there is a good chance it would be in the code base already. Mark - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: DefaultServlet and default character encoding
2010/6/17 Felix Schumacher : > For the moment I have written a filter, which sets a default encoding, as > soon as Response.setContentType(String type) is called and > type.startsWith("text/"). That works for the moment, but I would prefer the > solution described in above thread. I know that setting charset in a mime-mapping works, e.g.: htm text/html;charset=iso-8859-1 html text/html;charset=iso-8859-1 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. Also there is AddDefaultCharsetFilter in Tomcat 7. It is similar to what you are doing, see its JavaDoc and source code. > 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 configuration. Best regards, Konstantin Kolinko - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: DefaultServlet and default character encoding
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 encoding, as >> soon as Response.setContentType(String type) is called and >> type.startsWith("text/"). That works for the moment, but I would prefer >> the >> solution described in above thread. > > I know that setting charset in a mime-mapping works, e.g.: > > > htm > text/html;charset=iso-8859-1 > > > html > text/html;charset=iso-8859-1 > > > 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 to 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 configuration. 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. Bye Felix > > Best regards, > Konstantin Kolinko > > - > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: DefaultServlet and default character encoding
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 encoding, as soon as Response.setContentType(String type) is called and type.startsWith("text/"). That works for the moment, but I would prefer the solution described in above thread. I know that setting charset in a mime-mapping works, e.g.: htm text/html;charset=iso-8859-1 html text/html;charset=iso-8859-1 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 to 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 configuration. 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 http://httpd.apache.org/docs/2.2/mod/core.html#adddefaultcharset and if so, how exactly? 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: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: DefaultServlet and default character encoding
On Fri, 18 Jun 2010 12:50:31 +0200, Rainer Jung wrote: > 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 encoding, >> as soon as Response.setContentType(String type) is called and type.startsWith("text/"). That works for the moment, but I would prefer the solution described in above thread. >>> >>> I know that setting charset in a mime-mapping works, e.g.: >>> >>> >>> htm >>> text/html;charset=iso-8859-1 >>> >>> >>> html >>> text/html;charset=iso-8859-1 >>> >>> >>> 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 to >> 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 configuration. >> 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 > > http://httpd.apache.org/docs/2.2/mod/core.html#adddefaultcharset > > and if so, how exactly? I placed the following into the config for the corresponding virtual host: 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 :( Grüße Felix > > 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: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org
Re: DefaultServlet and default character encoding
On 18.06.2010 13:50, Felix Schumacher wrote: On Fri, 18 Jun 2010 12:50:31 +0200, Rainer Jung wrote: 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: 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 configuration. 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 http://httpd.apache.org/docs/2.2/mod/core.html#adddefaultcharset and if so, how exactly? I placed the following into the config for the corresponding virtual host: 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 :( Good to know. Rainer - To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org