Torsten Foertsch wrote:
On Thu 01 Jan 2009, André Warnier wrote:
Unfortunately the Content-Type header is a different beast. Inside
Apache it is not only a response header, but a more complex data
type. You can set a different Content-Type header with mod_headers,
but since the internal structure remains unchanged it will be
overwritten again by Apache.
As a result I see no way to change an existing character set in a
Content-Type header.
Try to create a request output filter that sets $r->content_type,
removes itself and returns DECLINED.
Torsten, you're the greatest.
It works perfectly, even without having the filter remove itself (which
I did not know how to do).
Here is the minimal filter :
package AM::FixupContentType;
# Fixes bad servlet-generated Content-Type header, when used in
iso-latin-2 environment.
# Idea from Torsten Foetsch.
$AM::FixupContentType::VERSION = '0.01';
use strict;
use warnings FATAL => 'all';
use mod_perl2 2.000001;
use base qw(Apache2::Filter);
use Apache2::Const ();
sub handler : FilterRequestHandler {
my ($f, $bb) = @_;
$f->r->content_type("text/html; charset=ISO-8859-2");
return Apache2::Const::DECLINED;
}
1;