- - PR -
getParameterで取得するデータの文字コード
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-01-27 15:36
もしご存知の方がいらっしゃいましたらご教授下さい。
JSP→Servletでフォームのデータを取得しています。 テキストボックスに入力した文字をgetParameterで取得し、 以下のようにして文字コードを出力してみました。 ---- String s = request.getParameter("str"); if( s != null ){ int hex; for( int i=0; i<s.length(); ++i ){ hex = (int)s.charAt(i); System.out.println(s.charAt(i) + ":[" + Integer.toHexString(hex)+ "]"); } } ---- そこで、フォームのテキストボックス(name=str)に 「ア」を入力してからsubmitしてみたところ、 @ > ?:[83] > A:[41] A > ア:[30a2] の2パターン(SJIS・Unicode)が不規則に出力されてしまいます。 どちらか固定ならばまだわかるのですが、何故2パターンで取得 されてしまうのか、わかりません。 JSPのソースには <%@ page contentType="text/html; charset=Shift_JIS" %> と指定してありますし、HTMLの部分にも <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> と指定しています。 尚、サーバ環境は以下の通りです。 RedHat Linux 7.1 apache 1.3.27 Tomcat 3.3.1 jdk 1.3.1_06 どうぞよろしくお願い致します。 |
|
投稿日時: 2003-01-27 16:31
> JSP→Servletでフォームのデータを取得しています。
> テキストボックスに入力した文字をgetParameterで取得し、 > 以下のようにして文字コードを出力してみました。 ---- String s = request.getParameter("str"); if( s != null ){ int hex; for( int i=0; i<s.length(); ++i ){ hex = (int)s.charAt(i); System.out.println(s.charAt(i) + ":[" + Integer.toHexString(hex)+ "]"); } } ---- コンテナの設定にもよりますが、 リクエストパラメータのデフォルト文字エンコーディングは「8859_1」です。 ---- String s = request.getParameter("xxx"); if( s != null ){ s = new String(request.getParameter("xxx").getBytes("8859_1"), <エンコーディング文字セット>); } else { s = ""; } ---- といった感じで書けばよいのでは... > JSPのソースには > <%@ page contentType="text/html; charset=Shift_JIS" %> > と指定してありますし、HTMLの部分にも > <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> > と指定しています。 これらのコードは、レスポンス時に必要となる文字エンコーディングの設定ですので、 件名にあるようなリクエスト情報の入力とは、何の関係もありません。 |
1
