[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な話題など)