• 締切済み

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を設定しています。なんでしょうか。。。わかりません。アドバイス宜しくお願い致します。

  • Java
  • 回答数6
  • ありがとう数10

みんなの回答

回答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

  • Apacheの文字化け

    使用環境 OS:Debian etch apache 1.3 この環境でApacheでウェブページを開設しました。しかし、デフォルトでは文字化けしてしまうのでAdddefaultCharsetをoffにしてみました。 それでも相変わらず文字化けしてしまいます。 しかし、エンコードの設定で日本語(自動選択)を選ぶと直りました。 しかし文字化けがデフォルトのままでは正直、良いとは思わないので これを直したいのですがみなさんはほかに何か心当たりはありませんでしょうか? ちなみにファイル転送にはSambaを通して転送しています。

  • apache2.2とtomcat6.0(ssl設定済)の連携に関して質

    apache2.2とtomcat6.0(ssl設定済)の連携に関して質問です。 環境(windows 2003 server,JDK1.6,eclipse3.5,struts1.3,postgresql8.4) apacheを使用して公開したいのですが、tomcatのssl設定が絡んでいる関係でうまくいきません。 tomcatでsslを設定せず、apacheでsslを設定した方が良いのか。 tomcatとapache両方でssl設定をした方が良いのか。 tomcatでsslを設定しているとapache2.2とtomcat6.0の連携はできないのか。 または、やり方が違うのか。 教えてください。 tomcat(ssl設定済)をapacheに連携したいのですが、Apache2.0以前の時と異なり、mod_jk/mod_jk2は要らなくなったみたいなので、インターネットを調べた結果 ■server.conf <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> をコメント <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> を追加 ■httpd.conf #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so コメントを解除 <Location /jsp/> ProxyPass ajp://localhost:8009/jsp> </Location>

    • ベストアンサー
    • Java
  • PHPでの文字化け

    PHPの勉強をしている者です。 PHPファイルを作成し、htdocs内に保存、その後URLをブラウザに入力し アクセスしてみたところ、表示されたサイトが文字化けしていました。 インストールされているソフトはPHPのバージョンが4.3.2、Apacheは2.0.46です。 参考書を頼りにphp.iniのAddDefaultCharsetの項目をnoneに書き換え、 そのほかのディレクトリ設定の部分も参考書の通りに書き直し、ファイルの移動も行いました。 ソフトのバージョンが古いのは、参考書に合わせることで 環境設定の相違を防ぐためです。 AddDefaultCharset以外にphp.iniなどで どこか書き直す必要があるのでしょうか? どこをどうすれば、日本語が上手く表示されるのでしょうか? 宜しくお願いしますm(_ _)m

  • apache2.2とtomcat5.5の連携

    http://oshiete1.goo.ne.jp/qa5793960.html 上記のとおり、apache2.0とtomcat5.5でmod_jk.soを使い連携をがんばってましたが、どうにもラチがあかないので、連携方法が簡単になったというapache2.2に切り替えました。 コンパイル+インストールは下記のとおり ./configure --prefix=/usr/local/apache2 --enable-proxy --enable-proxy-ajp --enable-so make make install /usr/local/apache2/conf/httpd.confは下記を追加 <Location /jsp-examples/> ProxyPass ajp://localhost:8009/jsp-examples/ </Location> <Location /servlets-examples/> ProxyPass ajp://localhost:8009/servlets-examples/ </Location> これで、tomcatとapacheを再起動 http://localhost:8080/jsp-examples/ = 正常に表示 http://localhost/jsp-examples/ = ページなし http://localhost/ = It works! やはり連携が成立しないのです。いったい何か足りないものがあるのでしょうか?どうぞ解決までご協力をお願いします。

  • apacheの文字化け

    こんにちは。 今日、初めて、apacheというものを、会社のパソコンにインストールしました。 まったくの素人で、まだまだ、知識はゼロに近いので、うまく質問ができないかもしれません。 ある、サイトで、インストーラーをダウンロードしまして、apacheをインストールしました。 htdocsというのが、デフォルトの場所なので、そこに htmlファイルを置き、ブラウザで、localhost/ファイル名を指定して、ファイルを開きました。 すると、きちんと日本語で、表示されました。 次に、そのファイルをhtdocsのフォルダ内に新しく 作成した、testというフォルダの中にコピーして おきました。 localhost/test/ファイル名と指定してブラウザを開いたところ、今度は、日本語で表示されず、西ヨーロッパ言語というものになってしまいました。 これを直す方法はありますか?

  • Tomcatとapacheの連携

    環境は fedora core 5 jdkのversionを1.5_0_05 です。 やりたいことは、Tomcatとapacheの連携ですが途中で 行きづまってしまいました。 http://memo.blogdns.net/java3.htmlのページの Tomcatとapacheの連携の箇所を見ながら 作業していたのですが fedora core 5をインストールをしたのですが mod_proxy_ajpは ファイルシステム/etc/httpd/modules/mod_proxy_ajp.conf にあるのですが mod_proxyが探したのですが、見つからなかったのです。 読み込まれてないのではないかなと思いまして もしご存知でしたら、mod_proxyのディレクトリを 教えていただけないでしょうか』

  • apache2.0とtomcat5.5の連携がうまくいかず非常に困って

    apache2.0とtomcat5.5の連携がうまくいかず非常に困ってます。 Windowsでapache2.0.61とtomcat5.5.28を連携しようとしています。JDKは5.1.14をいれてます。 1、mod_jk.soをmodulesに入れる。 2、apache2のconfにworkers.propertiesを新規作成して worker.list=ajp13 worker.ajp13.type=ajp13 と編集して保存。 3、apache2のconfのhttpd.confに LoadModule jk_module modules/mod_jk.so JkWorkersFile "C:/Program Files/Apache Group/Apache2/conf/workers.properties" JkMount /*.jsp ajp13 JkMount /servlets-examples/* ajp13 JkMount /jsp-examples/* ajp13 JkMount /*.do ajp13 と編集して保存。 4、tomcat→apache2の順番に起動。 結果:tomcatもapacheも動作しているけど、連携は出来ず。。 http://localhost/hoge/  →  ページがない http://localhost:8080/  →  正常表示 http://localhost/     →  正常表示 連携の確認のみとれず、何が原因なのか、全くわかりません。 どなたかご存じの方、ご教授下さい。。

  • Apache2.2での文字化けが直せません

    Apache2.2.15をインストールし、「独習PHP」に従って設定をしたのですが、日本語が文字化けします。 httpd.confで変更したのは以下の部分です。 LoadModule php5_module "c:/php/php5apache2_2.dll" Addtype application/x-httpd-php .php (AddDefaultCharsetは、調べてみた所2.2系から使われてないらしいので、追加していません) php.iniの設定も間違いなく行いました。 また、<head>内に<meta http-equiv="Content-Type" content="text/html; charset=euc">などと埋め込んだりしてもだめでした。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • サーブレットから別フレームのパラメータを取り出すことは可能でしょうか?

    はじめまして。 JAVA&サーブレット初心者です。 現在、サーブレット、JSPを使ったWEBアプリケーションの開発をしてお ります。 左右二つに分かれたフレームを持つWEBアプリケーションを作っています。 大まかな流れとしては以下の通りです。  (1)左側のフレーム(仮にleft.jspとします)からサーブレット  (仮にservlet1とします)を呼び出す。  (2)右側フレームに(1)の処理結果のJSP(right1.jsp)を呼び出す  (3)right1.jspでサーブレット(servlet2)を呼び出す。  (4)右側フレームに(3)の処理結果のJSP(right2.jsp)を呼び出す。  (5)right2.jspでサーブレット(servlet3)を呼び出す。  (6)右側フレームに(5)の処理結果のJSP(right3.jsp)を呼び出す。   上記のように左側フレームが固定で右側フレームのJSPがサーブ  レット処理によって切り替わるようなWEBアプリケーションを開発し  ています。    問題なのは、今回開発しているシステムの要件により、(5)で呼び出され るサーブレット(servlet3)内の処理で左側のフレーム(left.jsp)の入力 パラメータが必要だということです。  servlet1でleft.jspの入力パラメータをセッションオブジェクトに保管 し、servlet3でセッションオブジェクトから復元すれば実現は可能かと思 いました。  しかし、途中servlet2からの処理が大変重いものであり、セッションオ ブジェクトは一定時間がたつと無効になってしまうと聞いたのでタイトル のような方法を考えたのですが、見当がつかず、今回の質問に至りました。  request.getParameter("****"); ではもちろん取り出せないと思いますが、サーブレットで別フレームのパ ラメータを取り出すことは可能でしょうか?

    • ベストアンサー
    • Java
  • ApacheにPHPを組み込みつつ、Tomcatを連携

    こんにちは。現在私は自宅のパソコン(WindowsXP)をWWWサーバにしようと考えておりまして、Apache(Ver2.2.4)をインストールし、Tomcat(ver5.5)と連携させております。ApacheからTomcatに連携させることは成功した(はず)と思います。以下のような設定です。confフォルダの中のhttpd.confファイルの中で、 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so を有効にし、 ProxyPass / ajp://localhost:8009/ を追加しました。これで、http://localhost/と入力すると、:8080を付加しなくてもTomcatのトップに跳ぶようにはなっています。これで連携はOKなんですよね?  さらにこれに、PHPをモジュールとして組み込みたいんです。 Tomcatを使わずに、Apacheのみで動かす場合は、うまくphpがモジュールとして組み込めて、Apacheのhtdocsフォルダにphpinfo.phpファイルをおいて、テストすると正常に表示されます。  しかし、Tomcatと連動させると、phpをApacheのモジュールに組み込んでも、Tomcatとの連携が優先されて、Apacheの中身(htdocsフォルダなど)がブラウザで呼び出せないために、phpファイルにアクセスできません。  以上が疑問点ですが、とにかく知りたいのは、Tomcatとの連携とApacheの機能(PHPをモジュールに組みこんで使う)とを両立させるには、どうしたらいいのでしょうか、ということです。どなたか教えてくださいませんか。お願いします!

    • 締切済み
    • PHP

専門家に質問してみよう