- ベストアンサー
RedHat9/Apache1.3でCGIが文字化け
- RedHat9/Apache1.3でCGIを動かす際に文字化けする問題について
- ルーターの下にあるRedHat9/Apache1.3のサーバマシンでCGIプログラムを動かそうとしたところ、文字化けする問題が発生しています。
- Kent WebさんのサイトからダウンロードしたCGIプログラムを設置した際、日本語が文字化けしてしまう問題が発生しています。対策方法を知りたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>Shift JISで保存しているようです。 なるほど、多分、気を利かしてそうしているのでしょうね。<この場合いらんことですけど(^^; >サーバマシンでファイルをいじるものではない なるほど、 ロックされたりすると(クライアントが)困りますもんね。マシンパワーを使ってしまうしね。(GUIなんかで作業してたら大変な気もしますしね) 一理あると思います。 サーバーマシンしかない時は、一端作業用にコピーして作業すればいいかと思います。
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>Linuxのテキストエディタで少しでもいじると文字化けしてしまいます。 Linuxでエディタを起動して編集しているのではなくて、 IEとかで接続して、エディタを起動して編集しているのですか? そうしたネットワーク接続した端末から、ちゃんと編集できるエディタではないのかもしれませんね。 (勘違いしてますか、私?) Linuxのエディタは、2バイトをちゃんと扱えるエディタなのでしょうか? (例えば、カーソル移動で、全角文字の処は、全角でカーソルが移動し、Deleteキー一回で1文字が消える) そうでないなら、エディタが想定している位置と現在編集している位置が違ってしまって、化けてしまっているのかもしれません。 日本語が扱えるエディタを導入・構成しましょう。 まあ、同じコトなら、winで作業すればいいとも思いますけど。
お礼
何度もお付き合いいただき、ありがとうございます。 「テキストエディタ」とは、いわゆる一般的なテキストファイルを加工するエディタのことではなく、RedHatのスタートメニューの[アクセサリ]に入っているアプリケーションの名前です。ちょうどWindowsの「メモ帳」と同じようなものです。私の説明不足でした。すみません。 このエディタ、わざわざEUCに変換して送ったファイルをShift JISで保存しているようです。 emacsエディタでいじってみると、問題なく保存できました。 そして、経験者の方に「そもそも、サーバマシンでファイルをいじるものではない」と注意されました。無知なもので、こんな基本的なことも知りませんでした。 WindowsのクライアントからFTPサーバまたはファイルサーバ経由でアップする分には問題ありませんから、このことは「気にしない」ということで、いったん済ませてしまうことにします。 プチ☆ボードだけでなく、他のCGIプログラムも、多少の問題をはらみつつも動くようになりました。 これもひとえにBLUEPIXYさんのおかげです。 丁寧なお答え、とても参考になり、助かりました。 本当にありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
まずは、おめでとうございます! (^o^)/ >Win 2kマシンで編集したpetit.cgiを… ダウンロードしたCGIファイル自体がシフトJISで作成されています。 なので、メッセージの表示部分(全角文字列が埋め込まれている部分)が、EUCで表示しようとすると化けてしまいます。 そのためにサーバーにアップする前に、あらかじめファイルを変換してやらないといけません。 一端変換してアップしてからであれば、その後ファイルをいじるのは問題ない(変更する手順が重要なのではなくて単にファイルの書かれているコードの問題)と思います。
お礼
> まずは、おめでとうございます! まず目的が達成できて、一安心です。本当にありがとうございますm(_ _)m 引き続きいろいろやってみているのですが、FFFTPでWin→RedHatに転送したpetit.cgiは、Linuxのテキストエディタで少しでもいじると文字化けしてしまいます。 たとえば、コメントアウト行(行頭が#で始まっている行のことです。この呼び名でいいのかな?)に半角スペースをひとつ入れて保存とか、スペースを挿入、即座にバックスペースで削除して元に戻し保存とか、ほんのわずかいじっただけでも、文字化けしてしまうのです。 クライアントのOperaとIE、サーバのMozillaでそれぞれエンコードを自動判別、Shift JIS、EUCとして試しても、いずれも化けています。 念のためFFFTPの設定を。 [オプション]の[転送1]で転送モードは[常にASCIIモード] [接続]→[ホスト一覧]→[ホストの設定]→[文字コード]で ホストの漢字コード:EUC,ファイル名の漢字コード:euc,両方の欄で[半角カナを全角に変換]にチェック(といっても、半角カナなんかファイル内にありませんが) なにやら奥の深そうな問題なので、参考になるサイトや解決のヒントだけでも教えていただけると幸いです。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
Bongさんの環境は、質問文から多分EUCなのですね。 くだんの(プチ☆ボード)プログラムは、シフトJISの環境で動かすことを想定しているようです。 # 文字コードをシフトJIS変換 &jcode'convert(*val, "sjis", "", "z"); の部分を # 文字コードをEUC変換 &jcode'convert(*val, "euc", "", "z"); にして、 EUCでアップロードしてみて下さい。 試してないので、ウマくいくかどうかはわかりませんけど。
お礼
回答ありがとうございます。 おっしゃるとおりにやってみると、問題解消しました。 数日間この問題にひっかかっていたので、本当に感謝します。 ところで、実ははじめ忠告に従わずサーバマシンのテキストエディタでpetit.cgiを書き換えながら試行錯誤していたのですが、これでは文字化けは解消しませんでした。そこでBLUEPIXYさんのおっしゃるとおりにWin 2kマシンで編集したpetit.cgiをFFFTPで送り、上書きしてやると正しく動作しました。 別の質問になってしまいますが、どなたか、これの理由を教えてくださいませんでしょうか。
お礼
> マシンパワーを使ってしまうしね。(GUIなんかで作業してたら大変な気もしますしね) すべてCUIで操作できるといいのですが、せかされているためじっくり基礎からやることができず、ついGUI環境を使ってしまいます。 無理をしてでもCUIでの操作を覚えてしまえばいいんでしょうけど。 今回は、本当にありがとうございました。 また機会がありましたら(おそらく何度もあると思いますが^^;)よろしくお願いします。