2

所以这是我的问题。我正在使用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是一种 hack,会对在该 JVM 上运行的所有代码产生副作用。更好的技巧是在 InputStreamReader 的构造函数中指定字符集

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

但是,如果另一端的 HTTP 服务器更改其编码,这可能仍然会失败。您最好使用诸如 Apache HTTPComponents 之类的 HTTP 库将 HTTP 响应解析为String. 它将从 HTTP 标头中读取编码并在所有情况下执行正确的操作。

于 2012-09-26T15:16:01.207 回答