No.17264 投稿時間:2004年09月18日(Sat) 00:58 投稿者名:ビーグル URL:http://fhisa-p.ddo.jp/
先日サーバをAN-HTTP Daemon 1.42aからApache2.0に移行いたしました。
HTML、CGIともに日本語表示され正常に動作するのですが、
ゲーム(商人物語)のIDコードが「???~?A」とか「?V?o?z??」で表示されます。
キャッシュの問題かなと思い新たにIDとパスワードを入力してログインすると
ログインすることができました。
しかし、ログイン後メニューで移動を行うと「存在しないIDです→???~?A」が
表示されます。
また、設置してあるYOMI-SEARCHも通常使用は問題ないのですが。
下記URLを直接アドレス入力すると
http://fhisa-p.ddo.jp/ys4/search.cgi?mode=search&word=誕生日
これまでは、検索結果が反映され検索窓に「誕生日」と表示されていましたが
Apache 2.0に変更後は、検索窓に「?a?¶?u」と表示され文字化けしています。
いろんな掲示板や検索エンジンで調べたのですが解決策が見つかりません
どなたか、ご存知の方がいらっしゃいましたらよろしくお願いします。
(今現在は、AN-HTTPにて稼動中です。)
No.17268 投稿時間:2004年09月18日(Sat) 10:04 投稿者名:通-行-人 URL:
> また、設置してあるYOMI-SEARCHも通常使用は問題ないのですが。
> 下記URLを直接アドレス入力すると
「ASCII 以外の文字をアドレスバーに直接入力する」 というのは、 「何の文字セットでエンコードするかは、 ブラウザの好き勝手に任せる」 ということをも意味します。
Windows 系の OS であれば Shift_JIS か UTF が使われますが、 その辺はきちんと理解していますか。
解らなければ、 また CGI 側で文字セットを自動判定する仕組みを実装していなければ、 きちんとフォームから送信すべきです。
> http://fhisa-p.ddo.jp/ys4/search.cgi?mode=search&word=誕生日
>
> これまでは、検索結果が反映され検索窓に「誕生日」と表示されていましたが
> Apache 2.0に変更後は、検索窓に「?a?¶?u」と表示され文字化けしています。
Shift_JIS で記述した 「誕生日」 を ISO-8859-1 で表示させると、 「?a?¶?u」 になります。
この辺の対策は済んでいるのでしょうか: http://sakaguch.com/PastBBS/0022/B0011881.html。
No.17270 投稿時間:2004年09月18日(Sat) 10:55 投稿者名:ビーグル URL:http://fhisa-p.ddo.jp/
通りすがりさん御返答ありがとうございます。
申し訳ありません。初心者のためとんちんかんな質問があったかもしれません。
> Shift_JIS で記述した 「誕生日」 を ISO-8859-1 で表示させると、 「?a?¶?u」 になります。
> この辺の対策は済んでいるのでしょうか: http://sakaguch.com/PastBBS/0022/B0011881.html。
#AddDefaultCharset ISO-8859-1
AddDefaultCharset Shift_JIS
http://sakaguch.com/PastBBS/0022/B0011881.htmlは、一応参照済みでISO-8859-1を無効にしています。
DefaultLanguage ja
LanguagePriority ja en da nl et fr de el it ko no pl pt pt-br ltz ca es sv tw
等、httpd.conf の修正は、ほとんどおこないました。
今回の文字化けは、HTM、CGIの文字化けではなく検索窓やIDコード等のクッキーの文字化けです。
こういう場合は、文字セットを自動判定する仕組みを実装していないCGI側の問題であるということですね。
No.17271 投稿時間:2004年09月18日(Sat) 14:15 投稿者名:Reboot URL:
横から失礼致します。
> #AddDefaultCharset ISO-8859-1
> AddDefaultCharset Shift_JIS
あえて Shift_JIS 指定せず、コメントアウトしただけでよいのでは。
参考URL
http://www.aconus.com/~oyaji/suse/apache_suse.htm
mod_mime-defaults.conf の設定のところ。
検索CGIで、jcode.pl でなく Jcode.pm を使ってみる。
実際に試してないので、的外れでしたらすみません。m(_ _)m
No.17272 投稿時間:2004年09月18日(Sat) 15:12 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/
これは、Windows版 Apache2.0系でしか発生しない結構有名な話です。WindowsのままApacheを使うという前提なら回避策としては、Apacheを1.3系にするか、CGIを改造するしかないでしょう。
具体的なCGIの改造は、クッキーを発行する前にエンコードして、クッキーを取得した後でデコードすることになります。
つまり、対応していないものは全て改造が必要です。KENTさんのBBSのようにクッキー処理がサブルーチンになっていれば、ものの1分で改造できますが、処理が散らかっちゃっていたら相当根性を入れないと大変でしょうね。
エンコード: $xx =~ s/(\w)/sprintf("%%%02X", unpack("C", $1))/eg;
デコード : $xx =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
No.17285 投稿時間:2004年09月19日(Sun) 20:33 投稿者名:ビーグル URL:http://fhisa-p.ddo.jp/
いろいろ、ご助言ありがとうございました。
CGIの改造は、私にできないので
現行のAN-HTTPでしばらくは
運営していきたいと思います。
たいへん勉強になりました。