2

文字列「Montaño」があり、それを Java Map のキーとして使用しています。しかし、このキーの値を取得しようとしているとき。それはヌルを与えます。

ここで何が問題なのですか?

EDITED : DB から取得している値は、Monta�o ログに表示され、キーとして使用されます。しかし、他のパラメーターから同じ名前を読み取っている場合 ( db からの名前も表示されます)、Montaño として表示されます。「�」が ñ であることは確かです。それで、マップのキーとして設定する前に何をすべきですか。値を適切に取得できるように

4

7 に答える 7

2

データベースから得られる「置換文字」は、正しくデコードできなかった文字を知らせるために使用される特殊文字です。常に Montaño を返すようにデータベースを修正する必要があります。

問題は、個々のレコードではなく、データベースへの接続方法にある可能性があります。接続文字列で接続のエンコーディングを設定するか、接続を取得した後に接続のプロパティを設定する必要がある場合があります。どのデータベースを使用しているかは言わないので、詳細はわかりません。接続オプションについては、DB のマニュアルを確認してください。

于 2013-07-12T07:36:17.030 に答える
0

あなたの問題は、マップではなく、別の場所にあります。このテストを試す

    HashMap m = new HashMap();
    m.put("Montaño", "Montaño");
    System.out.println(m.get("Montaño"));

出力

Montaño
于 2013-07-12T07:26:31.567 に答える
0

あなたのデータベースは適切にエンコードされていると思います。-Dfile.encoding=UTF-8JVM の開始時に渡してみてください。スタンドアロン プログラムの場合は、 のように渡しjava -Dfile.encoding=UTF-8 … com.packages.YourMainClassます。Web アプリケーションの場合は、サーバーの起動スクリプトに追加します。

于 2013-07-12T08:30:35.223 に答える
0

私は試した

String val = "Montaño";

Map<String, String> map = new HashMap<String, String>();
map.put(val, "test");

System.out.println(map.get(val));

そして、必要に応じて出力:

test

そのため、要素を取得しようとしている文字列に問題がある可能性があります。両方の文字列が同じかどうかを確認します。

于 2013-07-12T07:26:46.430 に答える