• 締切済み

Apache 文字化け

以下の環境で、WebブラウザをJSPで作成し、入力した日本語をServletから出力させるプログラムを作成しています。 【環境】 OS:Windows XP Webサーバ:Apache 2.2.4 サーブレット、JSPコンテナ:Tomcat 5.5.23 コネクタ:mod_proxy_ajp 【事象】 Webブラウザより、日本語を入力⇒クエリ送信⇒結果画面をした結果、Webブラウザから入力した値のみが文字化けします。 JSP側でもharset=Shift_JISを指定していますし、Apacheのhttpd.confでもAddDefaultCharset offを設定しています。なんでしょうか。。。わかりません。アドバイス宜しくお願い致します。

みんなの回答

回答No.6

こんにちは。ええっと、クエリってことはリクエストになりますよね?resではなく req.setCharacterEncoding("Shift_JIS"); の指定もしてあるんでしょうか?文字入力してサーバに送信される時点、つまりリクエストの段階で文字化けしていたらresでいくら指定をしても文字化けは直らないはず。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.5

<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %> 上記のようにpageEncoding指定もつけてみてはいかがでしょう? 連携したときに部分的に文字化け(~とか-とか)するときはこれで対処できたんですが、全部だと違う気もしますが。。 あと、addDefaultCharset off ではなくて、コメントアウトしてしまうとどうなりますか?

miu0519
質問者

お礼

PEDO2744さん、ありがとうございます。 pageEncodingの指定も、addDefaultCharsetのコメントアウト指定もしましたが、同じ結果でした。

回答No.4

Apache経由と経由しない場合で、サーブレット側でリクエストの内容をログかコンソールに出力してみたらどうでしょうか。 違いはここだけなので。

回答No.3

Webブラウザから入力した値がServletで正しく受け取れていないかも知れません。

参考URL:
http://www.atmarkit.co.jp/fjava/onepoint/svltjsp/svltjsp12.html
miu0519
質問者

お礼

burroughs6さん、ありがとうございます。 残念ながら、setCharacterEncoding、setContentTypeも既に実装済みです。 なぜでしょう??

  • selected
  • ベストアンサー率0% (0/0)
回答No.2

JSPでの指定はどのようになってます? 1.<%@ page contentType="text/html; charset=Shift_JIS" %> 2.<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> もし1の指定がなければ追加してみてください。 それでも文字化けする場合は、入力した文字を受け取る Servlet内で、「HttpServletResponse」の変数の「res」に対して 次のメソッドを実行してみてください。 res.setContentType("text/html; charset=Shift_JIS");

参考URL:
http://www.atmarkit.co.jp/fjava/rensai3/mojibake01/mojibake01.html
miu0519
質問者

お礼

selectedさん、ありがとうございます。 JSPの指定も、Servletの指定も実装済みです。 そのため、URLからPort番号:8080を指定して直接Tomcatを呼び出すと文字化けしませんが、Port番号:80を指定してApache経由でTomcatを呼び出すと文字化けします。なので、さっぱり、わからない状況です。

noname#39970
noname#39970
回答No.1

ブラウザからの値が 単純に %E3 みたいなエンコードされているのだとしたら文字化けじゃなくて仕様だと思う。

miu0519
質問者

お礼

SAYKAさんありがとうございます。 しかし、表示されるのは、文字エンコードではなく、こんな感じで表示されます。????の部分が前画面からの入力値です。 "こんにちは ???? " ちなみに、URL指定を現状、localhostを指定しているので、Apacheを介しているのですが、localhost:8080で直接、Tomcatと接続すると文字化けしません。

関連するQ&A

専門家に質問してみよう