文字化け対策について
JSPに文字コードを指定しているにも関わらず、
「Java側でUTF-8の文字コードを指定してあげなければ、画面遷移した画面遷移先で文字化けが起こってしまう。」という状況なのですが、これの解決方法は無いものでしょうか?
【文字エンコード状況】
●JSP
JSP側では、画面遷移元、画面遷移先の両方とも 文字コード「UTF-8で指定」しています。
<% page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
●Java
Java側では、
response.setContentType("text/html; charset=UTF-8");//コンテンツタイプ
request.setCharacterEncoding("UTF-8"); //コード変換
という2点をコード変換として記述しています。
【値受け渡し状況(画面表示状況)】
●1 画面遷移元 画面1(JSP)
<input type="text" value="あいうえお" name="name1">
●2 java(servlet) → 画面1のname1の“あいうえお”を受取る
String strName = new String(request.getParamete("name1"));
request.setAttribute("name", strName);
●3 画面遷移先 画面2(JSP) → “あいうえお”を表示
<%= (String)request.getAttribute("name1") %>
画面状況:文字化けしている。[ォ・・サウ」(といった感じです)
●現状の解決方法
ここで、文字化けの解決方法として、
画面1のリクエストをゲットする際に、
java(servlet)での、文字の受け取り方の記述を変更しました。
String strName = new String(request.getParamete("name1"));
から
String struserName = new String(request.getParamete("name").getBytes("ISO-8859-1"),"UTF-8");
という風に「 .getBytes("ISO-8859-1"),"UTF-8") 」 を付与してやることで、回避でききました。が、これで解決策としては妥当でしょうか?(正しいでしょうか?)
気にかかっているところが、どうもこのやり方が強引に文字を変換しているようにしか思えませんでして(実際のところは正しいのかもしれませんが・・・)このまま値を渡してやっていいのか判別が付かずに困っています。
この方法でも大丈夫でしょうか?
特別、何か問題というのはありませんでしょうか?