こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

テキストを表示すると文字化けする

まず、HTMLから
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>メール送信フォーム</title>
</head>
<body>
<h2>メール送信フォーム</h2>
<form action="conf.jsp" method="POST">
<table summary="" border="0">
<tr>
<td>お名前</td>
<td><input type="text" name="name" size="20"></td>
</tr>
<tr>
<td>メールアドレス</td>
<td><input type="text" name="from" size="20"></td>
</tr>
<tr>
<td>メールタイトル</td>
<td><input type="text" name="title" size="20"></td>
</tr>
<tr>
<td>メッセージ</td>
<td><textarea rows="5" name="message" cols="40"></textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="内容の確認"></td>
</tr>
</table>
</form>
</body>
</html>


それを受けるconf.jspで文字化けします。
が、1つ文字化けせずに表示する方法があります。

<%@ page language="java" contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_JIS"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>メール送信フォーム</title>
</head>
<body>
<h2>メール送信内容確認画面</h2>
<%
request.setCharacterEncoding("Shift-JIS");
↑ここですね↑見にくくてすいません。
ここでShift_JISに変換されてちゃんと表示されます。
でも、これは後から付け加えたものでソースコードには最初ありませんでした。


//フォームの値を取得
String mName = request.getParameter("name");
String mFrom = request.getParameter("from");
String mTitle = request.getParameter("title");
String mNaiyou = request.getParameter("message");
//値をチェック
boolean errFlg = false;
if (mName.equals(" ")) {
out.println("<p>お名前を入力して下さい。");
errFlg = true;
}
if (mFrom.equals(" ")) {
out.println("<p>メールアドレスを入力して下さい。");
errFlg = true;
}
if (mTitle.equals(" ")) {
out.println("<p>タイトルを入力して下さい。");
errFlg = true;
}
if (mNaiyou.equals(" ")) {
out.println("<p>内容を入力して下さい。");
errFlg = true;
}
if (errFlg == false) {
%>
<h2>内容を確認して送信ボタンをクリックして下さい</h2>
<form action="sendMail.jsp" method="POST">
<table border="0">
<tr>
<td width="100">お名前</td>
<td width="300"><%= mName %></td>
</tr>
<tr>
<td width="100">メールアドレス</td>
<td width="300"><%= mFrom %></td>
</tr>
<tr>
<td width="100">メールタイトル</td>
<td width="300"><%= mTitle %></td>
</tr>
<tr>
<td width="100">メッセージ</td>
<td width="300"><%= mNaiyou %></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="送信"></td>
</tr>
</table>
<input type="hidden" name="name" value="<%= mName %>">
<input type="hidden" name="from" value="<%= mFrom %>">
<input type="hidden" name="title" value="<%= mTitle %>">
<input type="hidden" name="message" value="<%= mNaiyou %>">
</form>
<% }%>
</body>
</html>


何故、文字化け状態になるのでしょう。
アドバイス宜しくお願い致します。

投稿日時 - 2009-03-31 23:19:53

QNo.4842821

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

HTMLの
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">中のcharsetもShift-JISに変更してみたら?
もしくはどちらでもcharsetをUTF-8に指定するのでは。
ご参考になれれば。

投稿日時 - 2009-04-01 12:11:45

あなたにオススメの質問