parameterのunicode変換について

このQ&Aのポイント
  • parameterのunicode変換について聞かせてください。servletでparameterを受け取って、unicode変換させて、必要なparameterだけを使うということです。ここでは具体的な変換方法についての質問です。
  • 質問者はHashtableを使用して、受け取ったparameterを変換していますが、特定の値だけ欲しい場合にどのようにすればよいかわかりません。具体的には、hinmeiとhinbanの値を個別に取得したいとのことです。回答者にはこの方法について教えてほしいとのことです。
  • 質問者は特定の値だけを取得したい場合の方法を教えてほしいとのことです。具体的には、hinmeiとhinbanの値を個別に取得したいとのことです。質問者はこの変換方法がわからず困っています。
回答を見る
  • ベストアンサー

parameterのunicode変換

unicode変換について聞かせてください。 servletでparameterを受け取って、unicode変換させて、自分の 必要なparameterだけを使うということです。 いろいろHPなどを参考に調べた結果、 Hashtable data = new Hashtable(); Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String key = (String)e.nextElement(); String[] values = request.getParameterValues(key); try { data.put(key,new String(values[0].getBytes("8859_1"),"JISAutoDetect")); } catch(java.io.UnsupportedEncodingException ex) { } } との内容の変換を元に考えたのですが、自分では改造できずにいます。 上記の例では、Hashtableに収められた、変換内容の取得が、 String hinmei = (String)data.get(kye); などとすると、hinmeiのunicode変換された値がすべて取得される と思います。 しかし、自分の欲しいunicode変換された値だけを取得するには どのようにしたらよいでしょうか? 例えば、 String hinmei = (String)data.get(hinmei); String hinban = (String)data.get(hinban); というように、個別で取得したいのです。 もちろん、この他にも、parameterで送られてきている値は、あるかも 知れませんが、この場合は使わず・・・。 また、使うときには、 String hinmoku = (String)data.get(hinmoku); と追加するだけでいいようにしたいのです。 ご教授できらた幸いです。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#11572
noname#11572
回答No.1

説明が非常にわかりにくいです。 Servletの勉強の前に 日本語の勉強をしてはいかがでしょうか。 質問の意図が不明確なため、 非常に回答しにくいのですが、 HttpSevletを継承したクラスで、 ・getParemeter(String param) ・getParameterValues(String param) メソッドをオーバーライドして、 文字コードの変換を行えばいいのではないでしょうか? 又は、Mapをラップするクラスを作成するという 方法もあります。 get(String param)内に変換処理を記述し、 データ格納のタイミングではなく、 データ取得のタイミングで文字コード変換を行うのも 有効かと。 あれこれ考えた結果、 使えないものが出来るパターンに 嵌りかけている気がします。 駄目もとで、手を動かしながら設計した方が いいものが出来ると思いますよ。

takuya_m
質問者

お礼

非常に分かりにくい、質問、回答くださってありがとうございます。 tautauさんの、言うとおりに、オーバーライドする方法、 Mapをラップクラス作成等をもう一度検討しつつ、1から設計しようと 思います。 分かりにくい質問、回答くださってありがとうございました。

関連するQ&A

  • パラメータの値を以下のように配列で取得したいですが、

    パラメータの値を以下のように配列で取得したいですが、 test2はnullになります。 パラメータは何回確認しましたので、あってます。なぜでしょうか。 教えていただけますでしょうか。 String[] test1 = request.getparametervlaues("test1"); String[] test2 = request.getparametervlaues("test2");

  • PHPのGETパラメーターの検索値の変更

    電話番号のデータ検索で、ハイフンが入っていたり、入っていなかったりして、検索の値を、Getパラメーターで取得したデータの「-」ハイフンを抜いて検索の値に格納したいのですが、$_GET['tel']をstr_replaceしても、「-」でexplode後、implodeしてもデータ検索にひっかかりません。 $_GET['tel']のデータ変換を行う方法ありましたら教えて下さい。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • UTF8からUnicode(コードポイント)へ変換

    UTF-8の文字コードをUnicode(コードポイント)へ変換させたいのですが、参考URLの情報のように計算式を知りたいです 。 例えば下の「あ」は、16進では「E38182」、10進では「14909826」ですが、どちらかの値を利用してUnicodeのポイントコード「12354」を計算式を用いて求めたいです。 「あ」 Unicode = 12354 16進 = E38182 10進 = 14909826 参考 http://questionbox.jp.msn.com/qa500194.html

  • パラメータのやりとり

    3つのクラスの中でHTML上から取得したパラメータをやり取りしたいと思っています。 1つ目のクラス(CLASS_1.java) public class CLASS_1 extends CLASS_0 { public void doMain(HttpServletRequest request,HttpServletResponse response){ try{ String[] str = makeItem(request); CLASS_2 class_2 = new CLASS_2(); class_2.setItem(str); private String[] makeItem(HttpServletRequest request){ String[] result = new String[3]; result[0] = request.getParameter("test1"); result[1] = request.getParameter("test2"); result[2] = request.getParameter("test3"); return result; 2つ目のクラス(CLASS_3.Java) public class CLASS_3{ public void setItem(String[] data){ } public boolean makeTEXT(){ return true; } public ByteArrayOutputStream getTEXT(){ return null; } } 3つ目のクラス(CLASS_2) public class CLASS_2 extends CLASS_3 { public boolean makeTEXT(){ return true; } } という3つのクラスを作成しました。 CLASS_1で取得したstrの中の値をCLASS_2で使用したいと考えています。 ただ羅列するだけでかまいませんので、わかるかたヒントや参考になりそうなHPなどありましたら よろしくお願いします。

  • 双方向のHashtableクラス

    Hashtableクラスでは、getメソッドを用いて、keyからvalueの値を取得出来ますが、逆は出来ません(Iteratorすれば出来なくもないですが・・・)。 双方向に値をとれる、よいクラスがあれば、教えてください。 無ければ、keyとvalueを入れ替えて2回putしようと思っていますが、何かしら、よいクラスがありそうな気がしたので。

    • ベストアンサー
    • Java
  • リクエストパラメタを一括置き換え

    リクエストパラメタを一括置き換え if( $ENV{'REQUEST_METHOD'} eq "GET" ) { $buffer = $ENV{'QUERY_STRING'}; } else { read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} ); } %req_params = map { /([^=]+)=(.+)/ } split /&/, $buffer; 上記のように書いていて、リクエストされたものを置き換える時は次のように一個一個書いています。 $req_params{name} =~ s/&/&/g; $req_params{mail} =~ s/&/&/g; $req_params{url} =~ s/&/&/g; このリクエストされたパラメタを一括で置き換えするにはどうすればいいのでしょうか? 例えば、上記の書き方で以下のようなことをしたいです。よろしくお願いいたします。 if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); } else { $buf = $ENV{'QUERY_STRING'}; } foreach ( split(/&/, $buf) ) { ($key, $val) = split(/=/); $val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg; $val =~ s/&/&/g; $req_params{$key} .= "\0" if (defined($req_params{$key})); $req_params{$key} .= $val; }

    • ベストアンサー
    • Perl
  • 半角カナ文字の変換

    半角カナ文字(濁点あり)の全角カナ文字への変換がうまくいかなくて悩んでいます。 現在、 HashTable.put("ア","ア"); HashTable.put("ン","ン"); このような感じで変換テーブルを作成し、 String strVal = "半角カナ文字"; for(int i = 0; i < strVal.length(); i++){   char c = strVal.charAt(i); if(HashTable.containsKey(c)){ strTmp.append(HashTable.get(c)); } } このような処理をしているのですが、 半角カナ+濁点(例えば、ガ)の変換が、 「カ゛」となってしまいます。 これを「ガ」とするにはどうすればよいでしょうか?? 何か良い方法がありましたら教えてください。 お願いします。

  • javascriptでGETパラメータを扱う

    javascript初心者です。 javascriptでURLをGETパラメータとして取得して、その値を HTMLのaタグのリンク先に指定しようとしています。 こんな感じに出来たらいいと思っています。 ↓ <a href="[GETパラメータで取得したURL]">[GETパラメータで取得したURL]</a> GETパラメータの取得は自力で調べて下記のように記述すればできることがわかりましたが、 aタグのリンク先に指定する記述方法が分かりません。 助けてください。 よろしくお願いします。 <script type="text/javascript"> function getUrlVars() { var vars = [], hash; var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1]; } return vars; } </script>

  • 連続ウェーブレット変換、スケールパラメータ(a)の上限?

    連続ウェーブレット変換(CWT)を研究で使用したいのですが、スケールパラメータ(a)の上限について分かりません。有限データをCWTする場合は、データ長によりスケールパラメータの上限が制約されるとのことですが、実際にはどのような値になるのでしょうか? (データ長が大きい程、低周波まで解析できるのでスケールパラメータの上限が大きくなるというイメージは分かります。) (スケールパラメータの下限はサンプリング定理から、サンプリング周波数の1/2だという事は分かるのですが、上限は具体的にどのような値になるのでしょうか?)

  • POSTしたデータがリストボックスに反映されません。

    POSTしたデータがリストボックスに反映されません。 ホームページ制作初心者です。 同一ファイル内で、リストボックスから値を選択し、その値に従って別のリストボックスの内容を絞り込みたいと思っています。 POSTは正常に行われていますが、データを受けた後、リストボックスが空欄のままです。 根本的にやろうとしている方法が間違っているのだと思います。 丁度、Okwaveのカテゴリ選択の様な、階層で絞り込んでいくようなものを作りたいです。 良い方法ありましたらご教授願います。 よろしくお願いいたします。 <FORM action="" method="post"> <?php $db = new PDO("mysql:host=localhost;dbname=DBNAME", "ROOT", "PASS"); $db->query("SET NAMES 'utf8'"); //品番 $rs = $db->query("SELECT * FROM m20mm"); ?> <h4>品番指定</h4> <select name="hinban" size="5" multiple="multiple" onchange="submit(this.form)" size="18"> <?php foreach($rs as $name1=>$hinban){ echo "<option value={$hinban[0]} selected>{$hinban[1]}</option>"; } ?> </select> </FORM> //ここから正常に動作していないと思われる。 <FORM> <?php $db2 = new PDO("mysql:host=localhost;dbname=DBNAME", "ROOT", "PASS"); $db2->query("SET NAMES 'utf8'"); //品目 $sql =<<<HINMOKU SELECT * FROM dfw_m40m WHERE dfw_m40m.分類C3 = :hinban HINMOKU; $hinban = $_POST['hinban']; $bs2 = $db2->prepare($sql); $bs2->bindparam(":hinban",$hinban); $bs2->execute(); $bs2->setFetchMode(PDO::FETCH_OBJ); ?> <h4>品目指定</h4> <select name="hinmoku" size="5" multiple="multiple" size="18"> <?php foreach($bs2 as $name1=>$hinmoku){ echo "<option value={$hinmoku[0]}>{$hinmoku[2]}</option>"; } ?> </select> <br> <br> </FORM>

    • ベストアンサー
    • PHP