我正在使用 Google App Engine 来获取一些数据。在从 GAE 发送数据之前,我将内容类型设置为“text/html”,将字符编码设置为“UTF-8”。我确定字符 åöä 已正确存储在服务器数据库中。
从我的 android 应用程序获取数据时,一切正常。字符 åäö 正确表示。这是奇怪的部分:当从 Windows 上的 java 应用程序获取相同的数据时,åäö 被“Ã¥”和其他奇怪的符号取代。当在 Mac 上从我的 java 应用程序中获取相同的数据时,åäö 会被其他一些奇怪的字符所取代。
所以我的问题是:为什么 android 应用程序可以正确读取字符串,而 java 应用程序不能?
编辑:
以下是我从 GAE 发送字符串的方式:
resp.setContentType("text/html");
resp.setCharacterEncoding("UTF-8");
resp.getWriter().println(myString);
以下是我在 android 和 windows 上的 java 中读取它的方式:
String response = "";
try {
URL url = new URL("http://mydomain.com/blabla");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
response += line;
}
wr.close();
rd.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Response is: " + response);