Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi,

I have a program that is using CGI::Application and HTML::Template, with Apache on FreeBSD

The site is Japanese, so it requires a Japanese Charset, however the program is automatically adding this to the header

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

I thought maybe it was Apache doing this, but trying a very simple program, not using any of those modules, the header has this (it is getting the EUC-JP from the meta-tag in the output HTML I guess.)

Content-Type: text/html; Content-Type: text/html; charset=EUC-JP

I have read the modules' documentation and see nothing about automatically setting the content header.

Does anyone have any idea what is going on? Or is there some way I can just parse out the first one with a reg-ex before it is sent to the client?

Replies are listed 'Best First'.
Re: Content Header automatically added
by ant9000 (Monk) on Oct 23, 2003 at 12:16 UTC
    You can control CGI::Application headers with methods header_type() and header_props():
    $app->header_type('header'); $app->header_props( -type=>'text/html', -charset=>'EUC-JP' );

    Read the docs at CGI::Application and CGI... it's all there!
Re: Content Header automatically added
by shenme (Priest) on Oct 23, 2003 at 12:34 UTC
    Might it be possible it is CGI.pm that is doing it?   I see code in CGI.pm
    # set charset to the safe ISO-8859-1 $self->charset('ISO-8859-1');
    The CGI.pm docs suggest that you can set the charset output in the header by using
    print $query->header( -type=>'text/html', -charset=>'EUC-JP');
    but of course CGI::Application wants you to set headers using its routine
    $webapp->header_props(-type=>'text/html', -charset=>'EUC-JP');
    From reading the docs I believe you could also influence the charset in the header by using
    $query->charset('EUC-JP');
    Is it possible you are calling the CGI.pm header() routine yourself instead of letting CGI::Application handle it?   I don't understand how you are getting two "Content-Type" headers.   Let's see, you can tell CGI::Application to *not* generate headers by doing
    $webapp->header_type('none');
    Let us know what more experiments find out.