Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

全角項目の文字化けについて

こんにちは。WinXP SP2, tomcat6, IE6, java1.6です。

 1.encodeはすべてUTF-8です。
 2.HttpRequestで受け取るinnerHTMLへの項目に全角
  があり、その箇所のコードは、以下のようです。
   <td onclick="syori2('<%= temp %>');"><%= temp %></td>
 3.受け取ったjavascriptは、この「temp」をクリックすると
   function syori2(sval) {
    window.open("caseichiran.jsp?caseno="+sval);
   }
  のようにパラメータを渡してjspをキックします。
 4.受け取ったjspは、
   String param  = (String)request.getParameter("caseno");
   byte[] bar      = param.getBytes("8859_1");
   param           = new String(bar, 0, bar.length, "UTF-8");
  のように変換するのですが、コンソールに出力すると
   ?E?02−000?
   (値は402−0001です)
  と化けてしまっています。

対応としては、こちらのサイトで拝見した、
  1.server/xmlの<Connector>にuseBodyEncodingForURI="true"を追記
  2.文字化けを起こしているjspに、
    request.getParameter()の前に、
    request.setCharacterEncoding("UTF-8");を追記
という方法を採っています。

一知半解な知識で書いているので、何か妙なことをしているような気はするのですが、どうも理解できません。
ご教授願えるとありがたいです。よろしくお願いいたします。

3

回答

5418

閲覧

3件の回答

評価

0

全角をURLに渡すなら、encodeURIComponent()しなきゃだめだろう。

>(String)request.getParameter("caseno");
キャストしないでも元からString。

評価

0

$さん、お返事が遅くなり申し訳ないです。
キャストの話は確かにそのとおり。最初に読んだ本にそう書いてあったので、今でもたまに(String)を書くときがあるという程度のことです。
encodeURIComponent()はjavaの文法ですか?
渡すのはjavascriptなので、そちらの板に投げてみます。
ありがとうございました。

評価

0

$さん、encodeURIComponent()は少し探したら簡単に見つかりました。
で、書いてみたら即OKになりました。
「なんだこりゃ!?」の心境です。
ともあれ、感謝々。です。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。