- 締切済み
JavaScriptからServletに渡した文字列が文字化け
度々お世話になっています。 今回もよろしくお願いします。 JavaScriptからServletに渡した文字列が文字化けしてしまい解決できずにいます。 以下に使っているコードを抜粋します。 1)HTML表示。 2)HTML内のボタン押下でJavaScriptからServletに文字列を渡す。 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP"> <SCRIPT LANGUAGE='JavaScript'> <!-- function subwinOpen() { window.open("pg_detail?type=0&detail=" + "国立競技場," +", "sub", "menubar=no") ; } //--> </SCRIPT> <FORM action="pg_detail" METHOD="get" NAME="myform1" onSubmit=""> <INPUT type="button" value="詳細" onClick="subwinOpen();" /> </FORM> 3)Servlet側で文字列取得。 pg_detail.java public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html;charset=EUC-JP"); String v_details = new String( req.getParameter("detail").getBytes("8859_1"), "JISAutoDetect" ); } 以上のコードを実行すると、 ”国立競技場,”が”国立競技?E”となってしまいます。 かなり端折ってしまいましたが、説明不足な個所があれば補足します。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- onchange
- ベストアンサー率20% (5/24)
自分も同じ問題で小一時間悩みました。 結局一時的に使うtempのJSPを開いて、そこで親ウィンドウの値を取得して(window.opener.document.xxform.xxx.valueとか)、tempのJSPのhiddenオブジェクトにつめて、その画面のformオブジェクトをsubmitをする(そのJSPファイルのformのaction属性に呼び出すservlet名を記述する・・・のかな?自分はstrutsだったので、ちょっとその違うかもです。)という方法を取りました。(かなり強引な方法ですが。) もっとよい方法はあると思いますが、自分の体験と同じだったので書き込みました。がむばってください。
- terra5
- ベストアンサー率34% (574/1662)
>window.open("pg_detail?type=0&detail=" + "国立競技場," +", "sub", "menubar=no") ; これがURLとして処理されると思うのですが、 ここに日本語の文字をそのまま使っているからでは? pg_detail?type=0&detail=%E5%9B%BD%E7 ... といった形にしないと。(文字コードは適当) あとは、実際にhtmlがEUCでないとか、 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP"> でなく、.htaccessあたりで charset を指定していないからとか。