―Servlet/JSPリファレンス―

古川正寿
2001/12/11
Javaプログラミング
ワンポイントレクチャーについて

   シフトJISなどで受け取ったパラメータをUnicodeに変換する

 HTTPでは日本語などのダブルバイトデータを扱う場合、JIS、EUC、シフトJISなどのコードを使います。しかしサーブレットはUnicodeにしか対応していません。このため、HTTPコマンド中から取り出した値をそのまま利用しようとすると相互の文字コードの違いからサーブレット中で正確な文字として扱うことができません。このような場合には、受け取った文字をUnicodeに変換する必要があります。

 以下のリストは、HttpRequestオブジェクト中のすべてのパラメータをUnicodeに変換するものです。getParameterNamesメソッドを使ってリクエストパラメータ名のリストを取得し、リスト中のパラメータ名からgetParameterValuesメソッドを使って値を取り出しHashtableオブジェクトにセットしています。ここで重要になるのがHashtableに書き込むときに値をバイト配列に変換し、そのときに変換コード形式を指定している点です。

リスト HTTPパラメータのUnicode変換
//HTTPパラメータの変換
public Hashtable getParameter(HttpServletRequest request) {
 Hashtable data = new Hashtable();
 // パラメータ名リストの取得
 Enumeration e = request.getParameterNames();
 while (e.hasMoreElements()) {
  String key = (String)e.nextElement(); // パラメータ名の取得
  // パラメータ値の取得
  String[] values = request.getParameterValues(key);
  try {
   // Unicode変換とHashtableオブジェクトへ値のセット
   data.put(key,new      String(values[0].getBytes("8859_1"),"JISAutoDetect"));
   }
    catch(java.io.UnsupportedEncodingException ex) {
   }
  }
  return data;
}

 

Javaプログラミング・ワンポイントレクチャー INDEX

 



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間