dポイントプレゼントキャンペーン実施中!

度々お世話になっています。
今回もよろしくお願いします。

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”となってしまいます。

かなり端折ってしまいましたが、説明不足な個所があれば補足します。
よろしくお願いいたします。

A 回答 (2件)

自分も同じ問題で小一時間悩みました。


結局一時的に使うtempのJSPを開いて、そこで親ウィンドウの値を取得して(window.opener.document.xxform.xxx.valueとか)、tempのJSPのhiddenオブジェクトにつめて、その画面のformオブジェクトをsubmitをする(そのJSPファイルのformのaction属性に呼び出すservlet名を記述する・・・のかな?自分はstrutsだったので、ちょっとその違うかもです。)という方法を取りました。(かなり強引な方法ですが。)
もっとよい方法はあると思いますが、自分の体験と同じだったので書き込みました。がむばってください。
    • good
    • 0

>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 を指定していないからとか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!