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

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



山脇です。
説明が不十分で申し訳ありませんでした。

杉浦さん
> 今まで正しく(?)動作していた環境はどういう物なんでしょう?
> potato から upgrade したらおかしくなったとか?
まさにそのとおりです。旧と現在の環境は下記のとおりです。

・旧環境
 Debian2.2 (2.2.19)
 Apache 1.3.9-14.3

・現在の環境
 Debian3.0 (2.4.18-bf2.4)
 Apache 1.3.26-0woody3


> CGI は何で書かれた物なんでしょうか?
CGI は peal で記述しています。
また、httpd.conf では AddDefaultCharset 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
が先頭に出力されました。

> # 個人的には perl の CGI.pm がつけてるんじゃないかと思うのですが。
気になったので、CGI.pm ファイルを閲覧していると、文字コードを設定してい
る部分がありましたが、このサーバ上で CGI で出力している動的ページを
Shift-JIS のみで出力している場合、極端な話、この部分を書き換えてしまっ
ても構わないものなのでしょうか?


小西さん
> まさかとはおもいますけど
> .htpaccess
>
> AddType "text/html; charset=hoge   " .html
これは .htaccess ファイル自体存在しないので、関係ないと思います。

重ね重ねよろしくお願いします。

------------------------
山脇 yamawaki@xxxxxxxxx