- PR -

JSP遷移時の文字化け。

1
投稿者投稿内容
まいこ
会議室デビュー日: 2005/07/01
投稿数: 9
投稿日時: 2005-07-20 11:57
*****  環境  *************************************************

・Windows2000(SP4)
・Tomcat5.0.28
・j2sdk1.4.2
・Eclipse2.1.3
・struts1.2.4



*****  状況  *************************************************

Actionクラスから、JSPに遷移した際に、
日本語が文字化けしてしまいます。

MSGが「あいうえお」としたのに、ブラウザに表示されるときには「BDFHJ」
になってしまいます・・・。

どなたか原因がわかる方、ご教授お願い致します。

*****  ソース  *************************************************

[[[ confirm.jsp(一部) ]]]

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ page pageEncoding="Shift_JIS" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>

<%
request.setCharacterEncoding("Shift_JIS");
%>

メッセージ:<%=request.getParameter("MSG")%><BR>





[[[ myaction.java(一部) ]]]

public class myaction extends Action {

  public ActionForward execute(ActionMapping p_map,
                 ActionForm p_form,
                 HttpServletRequest p_req,
                 HttpServletResponse p_res)
  throws Exception{

    String s_url = URLEncoder.encode(
            "http://localhost:8080/mysample/confirm.jsp?MSG=あいうえお"
            "Shift_JIS");

    p_res.setContentType("text/html; charset=Shift_JIS");
    p_req.setCharacterEncoding("Shift_JIS");

    ActionForward af = new ActionForward();
    af.setPath(s_url);
    af.setRedirect(true);
    frminp = null;
    return af;

  }
}



[ メッセージ編集済み 編集者: まいこ 編集日時 2005-07-20 11:58 ]
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-07-20 12:24
ここが参考になると思います。
http://www.nihon-eng.co.jp/c-break/TechNote/tomcat/TCAT5_Inst.htm

デフォルトのTomcat5はクエリストリングのエンコーディングを行ってくれません。
ですので、server.xmlのConnector要素にuseBodyEncodingForURI="true"という属性を
設定する必要があります。
まいこ
会議室デビュー日: 2005/07/01
投稿数: 9
投稿日時: 2005-07-20 13:13
かつのり様、レスの方ありがとうございました。

教えていただきましたサイトを参考に、
TomcatのServer.xmlに userBody〜を追加、

<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" useBodyEncodingForURI="true" />

strutsのプロジェクトごとにできるweb.xmlを

<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>

このようにしたのですが、未だ文字化けの方が改善されないです・・・。
他に怪しい箇所とかはありますでしょうか?
わく
ベテラン
会議室デビュー日: 2004/07/13
投稿数: 60
お住まい・勤務地: 九州
投稿日時: 2005-07-20 13:31
参考になるか分かりませんが
以下の方法で文字化けが直る場合があります。

jspをサクラエディタで開いて保存する時に文字コードセットと
改行コードが選択できるようになっています。

ここで文字コードセットをSJIS、改行コードをCR+LF
にセットして保存してください。

その後、jspの.javaファイルとclassファイルを削除して
実行すると文字化けをしなくなる時があります。
1

スキルアップ/キャリアアップ(JOB@IT)