[Petal] More on entities and  - SOLVED

William McKee william at knowmad.com
Tue May 4 19:54:14 BST 2004


Hi folks,

OK, I have a resolution regarding the forced setting of the Content-type
header. This behavior was occurring with a cgi script being run via
Apache::Registry. The script uses CGI::Application which sets the
Content-type to text/html. Because this is an A::Registry script, I have
the PerlSendHeaders declarative on.

The end result is that something was defaulting the charset to
ISO-8859-1 despite my Apache settings which suggest to do otherwise. A
quick "hello world" test shows that CGI.pm is doing this if no charset
is specified in the type argument to the header() function:


This script uses the AddDefaultCharset setting to set the header:

    #!/usr/bin/perl
    use strict;
    print "Content-type: text/html\n\nHello World!\n";


This one sets it to ISO-8859-1:

    #!/usr/bin/perl
    use strict;
    use CGI;
    my $q = new CGI;
    print $q->header( -type => 'text/html');
    print "Hello World!";

You'll see the header printed as:

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

If I specify the charset in the call to header(), all is well.
Personally, I think this is a bit heavy-handed of CGI.pm to force the
content-type. I'm not convinced it is a bug but it's darn close!

The mystery still remains as to why Perl is outputting the content in
UTF-8 on the production server and ISO-8859-1 on my test server. At
least I know how to handle it and think that the general consensus on
the Petal list is to set the Encoding when using Petal via overriding
the process() function or via a subclass of Petal.


Thanks!
William

-- 
Knowmad Services Inc.
http://www.knowmad.com


More information about the Petal mailing list