• 締切済み

AUの一部携帯でHTMLをPOSTすると、値が空

AUのK006やNS01の機種にて、下記のHTMLからPOSTをしたところ、サーブレット側にてパラメータ(regist_mail)の値が空となってしまいます。 S61Tの機種で試したら正常に取得できることから、原因が判明しておりません。どなたかご教授をお願いいたします。 HTMLやサーブレット側のファイルの内容は下記のとおりです。 ■HTML側 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta name="robots" content="noindex,nofollow"> </head> <body>  <form method="POST" action="/test/servlet/testentry">    <input size="20" maxlength="200" name="regist_mail" value="xxxxx@ezweb.ne.jp"><br>    <input type="submit" value="登録" name="entry"><br>  </form> </body> </html> ■サーブレット側のポスト関数 public void doPost(HttpServletRequest req, HttpServletResponse res)    throws ServletException, IOException {  // encFlag = 1 shif_jis変換する  // encFlag = 2 無変換  int encFlag = 1;  if ( req.getCharacterEncoding().toLowerCase().equals("shift_jis") ) {    encFlag = 2;  }  //パラメータのregist_mailの文字列の長さをチェックする  if ( convJp(req.getParameter("regist_mail"), encFlag).length() > 0 ) {    //    //ここにきてしまう。  } ■サーブレット側の共通関数 public static String convJp(String str, int encFlag) {  try {    if (encFlag == 1) {      return new String(str.getBytes("iso-8859-1"), "Shift_JIS");    }  }  catch ( Exception e ) {    e.printStackTrace();    return null;  }  return str; } =========================================

みんなの回答

回答No.2

No1 です。すいません。訂正です。 request.getCharacterEncoding() は信用できないようですね。 ちょっと手近で試してみたらどうやっても null が返ってきました。 なので、決め打ちでエンコーデイングに Shift_JIS や Window-31J を 指定されてみたらいかがでしょう? No. 1 で書いたように、setCharacterEncoding を使うと、後で 変換がいらないので楽だと思います。

回答No.1

なんとなくサーブレットの書き方が古風な気がしますが、 情報不足ですね。 ■TOMCAT はなんでしょう? ■request.getCharacterEncoding() は何を返していますでしょうか? とりあえず、getCharacterEncoding() で取得した Encoding文字列 を setCharacterEncodingに渡してから、getParameter("regist_mail") で文字を 取り出してはいかがでしょう? 最近の Tomcat なら、正しく文字を受け取ると思います。 この場合、getParameter("regist_mail")が返す文字列は変換不要のはずです。

関連するQ&A