[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:39009] Re: Apache1.3.26でCGIが出力する情報が文字化けする



武藤@Debianぷろじぇくとです。

At Fri, 12 Dec 2003 11:43:21 +0900,
Yamawaki wrote:
> > CGI は何で書かれた物なんでしょうか?
> CGI は peal で記述しています。
> また、httpd.conf では AddDefaultCharset off と指定しています。

んー。なんでoffがブームなんだろうなぁ。

> CGI の修正は、下記のような形で、HTML を出力している直前の行にヘッダを出
> 力させる文を追加しました。
> -----------------
> print "Content-Type: text/html; charset=Shift_JIS\n\n";
> # ↑上の一文を追加
> 
> print <<"End";
>         <html>
>         <head>
>         </head>
>         <body>
>           ・
>           ・
>           ・
>         </BODY>
>         </HTML>
> End
> -----------------
> しかし、この方法では、ヘッダとして認識されず、ブラウザウィンドウに
>  Content-Type: text/html; charset=Shift_JIS
> が表示されてしまい、出力されたページも文字化けしました。
> 
> そこで、CGI の先頭部分で、
> -----------------
> #!/usr/bin/perl
> require "jcode.pl";
> 
> use CGI;
> print "Content-Type: text/html; charset=Shift_JIS";
> -----------------
> としたところ、
>  Content-Type: text/html; charset=shift_jisContent-Type: text/html; charset=ISO-8859-1
> というヘッダが出力されました。
> 
> また、問題が発生している該当 CGI をコマンドラインから実行したところ、
> CGI 内では出力することを指定していないはずの
>  Content-Type: text/html; charset=ISO-8859-1
> が先頭に出力されました。

サンプル。

#!/usr/bin/perl
use CGI;
use Jcode;
$q = new CGI;
print $q->header('text/html; charset=Shift_JIS');
print Jcode->new("<html><body>あいうえお</body></html>")->sjis;

-- 
武藤 健志@Debian/JPプロジェクト   (kmuto@debian.org, kmuto@debian.or.jp)
           株式会社トップスタジオ  (kmuto@xxxxxxxxxxxxxxx)
URI: http://www.topstudio.co.jp/~kmuto/ (Debianな話題など)