下記の構成で開発をしています。

Apache2.0.54
j2sdk1.4.2_08
Tomcat5.0.28
JK2

Tomcat単独では、GETで送信した日本語でも取得できましたが、
Apacheを通すと文字化けしてしまいます。
何か良い解決方法等ありましたらお教えください。

【送信】
<form action="test.jsp" method="GET">

<INPUT type="text" name="test" value="てすと" />
<input type="submit" value="submit">

</form>

【受信】
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%

request.setCharacterEncoding("UTF-8");

String sTest = "";

sTest = request.getParameter("test");

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<title>test</title>
</head>
<body>
<%= sTest %>
</body>
</html>

【表示結果】
てすと.

このQ&Aに関連する最新のQ&A

A 回答 (1件)

参考URLのGETメソッド使用時の注意点にあてはまるかと思います。



これは、getで送信した際に、Tomcatがフォームの内容を勝手にURLエンコーディングしてしまうために起こります。server.xmlのConnector要素で、useBodyEncodingForURIをtrueに設定すれば解決するでしょう。

参考URL:http://www.atmarkit.co.jp/fjava/rensai3/mojibake …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QJSP/Servletのパラメータの受け渡しが文字化けしてうまくいきません。

JSP・Servlet・Beanがうまくいかなくて困っています。開発環境はWindowsXP JDK5とEclipse3.2とTomcat5.5を使って作っています。
じゃんけんをするゲームを作ったのですが、コンピュータの手は文字列も画像もきちんと出るのですが、自分の手が文字列は文字化けして画像も正しく表示されません。
JSPのcharsetやServletのrequest.setCharacterEncoding()メソッドなど文字化け等で考えられることはいろいろ調べてやってみたつもりなのですがどうもうまくいきません。コンソールに値を出力するようにしてデバックもやってみてはいるのですが、同様に文字化けした値が入ってしまいます。どなたかご教授下さい。以下にソースを書きます。
<!--JankenStart.jsp-->
<%@page language="java" import="java.lang.*, java.util.*"
contentType="text/html; charset=Shift_JIS"%>
<html>
<head><title>じゃんけんゲーム</title></head>
<body>
<h2>このゲームはコンピュータとじゃんけんをします!<br>
コンピュータに勝てるかな?</h2>
<form action="../JankenAction">
あなたの手:
<input type="radio" name="te1" value="グー">グー<img src="../img/hand4-1-3.gif">
<input type="radio" name="te1" value="チョキ">チョキ<img src="../img/hand4-1-1.gif">
<input type="radio" name="te1" value="パー">パー<img src="../img/hand4-1-2.gif"><p>
<center><input type="submit" value="勝負"></center>
</body>

//JankenAction.java
package servlets;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import beans.JankenBean;
public class JankenAction extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
 request.setCharacterEncoding("Windows-31J");
 response.setCharacterEncoding("Windows-31J");
  String te=request.getParameter("te1");
  JankenBean jankenBean=new JankenBean();
  jankenBean.setJibun(te);
  jankenBean.setComputer();
  jankenBean.setHantei();
  request.setAttribute("hoge", jankenBean);
  RequestDispatcher rDispatcher=request.getRequestDispatcher("JSP/JankenKekka.jsp");
  rDispatcher.forward(request, response);
}
}
//JankenBean.java
package beans;
public class JankenBean {
private String computer=null;private String jibun=null;
private String hantei=null;private String jgazou=null;
private String cgazou=null;
public String getComputer(){
return computer;
}
public String getCgazou(){
return cgazou;
}
public void setComputer(){
int random =(int)(Math.random()*3);
if(random==0){
System.out.println("グー");
computer="グー";
cgazou="img/hand4-1-3.gif";
}
else if(random==1){
System.out.println("チョキ");
computer="チョキ";
cgazou="img/hand4-1-1.gif";
}else{
System.out.println("パー");
computer="パー";
cgazou="img/hand4-1-2.gif";
}
System.out.println("computer"+computer);
}
public String getJibun(){
return jibun;
}
public String getJgazou(){
return jgazou;
}
public void setJibun(String te){
jibun=te;
if(jibun.equals("グー")){
jgazou="img/hand4-1-3.gif";
}
else if(jibun.equals("チョキ")){
jgazou="img/hand4-1-1.gif";
}else{
jgazou="img/hand4-1-2.gif";
}
System.out.println("jibun"+jibun);
}
public String getHantei(){
return hantei;
}
public void setHantei(){
String hantei2="";
if( (computer.equals("グー"))&&(jibun.equals("チョキ"))||(computer.equals("チョキ"))&&(jibun.equals("パー"))||(computer.equals("パー"))&&(jibun.equals("グー")) ){
System.out.println("コンピュータの勝ち");
hantei2="コンピュータの勝ち";
}
  else if( (computer.equals("グー"))&&(jibun.equals("パー"))
    ||(computer.equals("チョキ"))&&(jibun.equals("グー"))
    ||(computer.equals("パー"))&&(jibun.equals("チョキ")) ){
System.out.println("あなたの勝ち");
hantei2="あなたの勝ち";
}else{
System.out.println("あいこ");
hantei2="あいこ";
}
hantei=hantei2;
}
}

JSP・Servlet・Beanがうまくいかなくて困っています。開発環境はWindowsXP JDK5とEclipse3.2とTomcat5.5を使って作っています。
じゃんけんをするゲームを作ったのですが、コンピュータの手は文字列も画像もきちんと出るのですが、自分の手が文字列は文字化けして画像も正しく表示されません。
JSPのcharsetやServletのrequest.setCharacterEncoding()メソッドなど文字化け等で考えられることはいろいろ調べてやってみたつもりなのですがどうもうまくいきません。コンソールに値を出力するようにしてデバックも...続きを読む

Aベストアンサー

JankenStart.jspのエンコーディングがShift_JISなので、
te1の値もShift_JISで送信されてきていると思いますが、
 String te=request.getParameter("te1");
だと、そのままJavaはunicodeだと思って読み込んでしまうので、
文字コード変換しなければならないと思います。
 String te=new String(request.getParameter("te1").getBytes("ISO-8859-1"), "Shift_JIS");
としてみたらどうでしょうか。

QApache 文字化けしてWebに表示してしまう。

CentOS6のApacheにて、httpd.confを

DefaultLanguage ja
↑日本語に指定
#LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
↑コメントアウト
#ForceLanguagePriority Prefer Fallback
↑コメントアウト
AddDefaultCharset off
↑offにする。

# curl -I 192.168.x.x
HTTP/1.1 401 Authorization Required
Date: Sun, 05 Apr 2015 10:34:18 GMT
Server: Apache
WWW-Authenticate: Basic realm="Password for www.xxxx.xx.jp"
Connection: close
Content-Type: text/html; charset=iso-8859-1

上記のcharset=iso-8859-1が怪しいと思いますが、
webで表示すると文字化けしてしまいます。
何が原因でしょうか? どこの設定をいじれば解決できますでしょうか?

↓こんな文字化けWeb表示です。

蜷榊燕:
驛オ萓ソ逡ェ蜿キ:

CentOS6のApacheにて、httpd.confを

DefaultLanguage ja
↑日本語に指定
#LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
↑コメントアウト
#ForceLanguagePriority Prefer Fallback
↑コメントアウト
AddDefaultCharset off
↑offにする。

# curl -I 192.168.x.x
HTTP/1.1 401 Authorization Required
Date: Sun, 05 Apr 2015 10:34:18 GMT
Server: Apache
WWW-Authenticate: Basic realm="Password for www.xxxx.xx.jp"
Connection:...続きを読む

Aベストアンサー

> Content-Type: text/html; charset=iso-8859-1

それは、BASIC認証のためのヘッダです。

文字化けしているのはBASIC認証のポップアップですか?
そうでなく、設置したHTMLの表示が文字化けしているなら、原因はそれではありません。


> AddDefaultCharset off
> ↑offにする。

その設定は正しいです。
設定を有効にするには Apache の再起動が必要です。
再起動していなければ、再起動後にWebの表示を確認してください。

AddDefaultCharset のデフォルト値は「Off」です。

http://httpd.apache.org/docs/2.4/ja/mod/core.html#adddefaultcharset

下記のようにコメントアウトしても結果は同じ(Off)です。

#AddDefaultCharset UTF-8


文字化けしているページ(HTMLファイル)の文字コードと、METAタグで指定した文字コードは一致していますか?
METAタグで文字コードを指定する場合は、TITLEタグ等でその文字コードを使用するよりも先にMETAタグを記述する必要があります。

> Content-Type: text/html; charset=iso-8859-1

それは、BASIC認証のためのヘッダです。

文字化けしているのはBASIC認証のポップアップですか?
そうでなく、設置したHTMLの表示が文字化けしているなら、原因はそれではありません。


> AddDefaultCharset off
> ↑offにする。

その設定は正しいです。
設定を有効にするには Apache の再起動が必要です。
再起動していなければ、再起動後にWebの表示を確認してください。

AddDefaultCharset のデフォルト値は「Off」です。

http://http...続きを読む

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

QTomcatは起動しますが初期index画面が表示できません

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection refused
--------------------
Description: Connection refused
と表示されてしまいます。

下記に参考になるかわかりませんが、各種起動状態を記載いたします。アドバイスよろしくお願い申し上げます。

◆コマンドプロンプトで
>ping localhostと入力すると、
-----
Pinging yamamoto [127.0.0.1] with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
-----

と表示されます。また、
>telnet localhost 8080の場合は
-----
接続中: localhost...ホストへ接続できませんでした。 ポート番号 8080: 接続に失敗し
ました
-----
と表示されます。

お手数ですが、よろしくお願い申し上げます。

Tomcatについての質問は多数寄せられておりますが、
それらを参考にしてインストールなど行いますが、
どうしても後一歩のところで私の場合表示できないという、もどかしい状態になっております。
どうかご存知の方いらっしゃいましたらご教示お願い申し上げます。

Tomcat5.0をWindowsXPで起動しております。
Javaはj2sdk1.4.1_02です。
通常インストールした後Startup.batを起動し、IE6.0で
http://localhost:8080もしくは
http://127.0.0.1:8080と入力、Enterキーを押しますが、画面に
Connection re...続きを読む

Aベストアンサー

>Tomcatは起動しますが
とのことですが、Tomcatが起動していないと思います。

pingが通るのはTomcatと無関係で、PCが立ち上がっていれば帰ってくると思います。

telnet localhost 8080
で接続できないとのことなので、Tomcatが起動できていないのではないでしょうか?


人気Q&Aランキング

おすすめ情報