2

だからここに私の問題があります。を使用して web から json を読み込んでいhttpurlconnectionます。その json にはドイツ語の特殊文字 (äöü) が含まれています。NetBeans の内部では、すべて問題ありません。jar をビルドして実行すると、「Silberanhänger」が「Silberanhänger」に変わります。コードはこちらです。内部には特別なものはありません

URL url = new URL("jsonUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setUseCaches(false);
con.setRequestProperty("Accept-Language","de-de,de;q=0.8,en-us;q=0.5,en;q=0.3"); 
con.setRequestProperty("Cookie","s="+session);
try (BufferedReader bf = new BufferedReader(new InputStreamReader(
                     con.getInputStream()))) {
            jsonRepresentation = bf.readLine(); //only 1 line
}
con.disconnect();
System.out.println(jsonRepresentation) // "ä" in IDE, "ä" in Live
4

2 に答える 2

0

-Dfile.encoding=UTF8でjvmエンコーディングを設定します

于 2012-09-26T12:59:27.167 に答える
0

設定-Dfile.encoding=UTF8は、その JVM で実行されるすべてのコードに副作用をもたらすハックです。より良いハックは、InputStreamReader のコンストラクターで文字セットを指定することです。

new InputStreamReader(con.getInputStream(), "UTF-8")

ただし、相手側の HTTP サーバーがエンコーディングを変更すると、これでも失敗する可能性があります。Apache HTTPComponents などの HTTP ライブラリを使用して、HTTP 応答をString. HTTP ヘッダーからエンコーディングを読み取り、すべての状況で正しいことを行います。

于 2012-09-26T15:16:01.207 に答える