Clinton Gormley wrote:
Hi all

There seems to be a bug in the mod_perl2/apache2 handling of character
sets for $r->custom_response().  I'm not sure which is at fault.

My pages are all in UTF8, but I can't find a way to set this character
set for custom generated error pages.

I've tried:

 - $r->content_type('text/html; charset = utf8');
 - $r->err_headers_out('Content-type' =>'text/html; charset = utf8');
 - <meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />
 - AddDefaultCharset UTF8

to no avail - apache always overrides this with:

   Content-Type: text/html; charset=iso-8859-1

According to the apache docs for AddDefaultCharset:

        Note: This will not have any effect on the Content-Type and
        character set for default Apache-generated status pages (such as
        '404 Not Found' or '301 Moved Permanently') because those have
        an actual character set (that in which the hard-coded page
        content is written) and don't need to have a default applied.

That implies that the character set is taken from the file itself, but
that shouldn't apply to errors generated with
$r->custom_response($error_msg)

For now, I plan to just entity escape anything that isn't in the ASCII
range, but is there a workaround? Should this be fixed?

this isn't a mod_perl thing, it's an httpd thing. this is from 1.3:

  http://www.mail-archive.com/[EMAIL PROTECTED]/msg20549.html

it seems the same holds true in httpd 2.0, it seems. see ap_send_error_response in

  modules/http/http_protocol.c

try setting subprocess_env(suppress-error-charset => 1) and see if that helps you at all.

--Geoff

Reply via email to