Google App Engineを使用してデータを取得しています。 GAEからデータを送信する前に、コンテンツタイプを「text/html」に、文字エンコードを「UTF-8」に設定しました。私は、文字åöäがサーバーデータベースに正しく格納されていることを確認しています。なぜ私のアンドロイドアプリはåäöを読むのですか?私のJavaアプリは(GAEからデータを取得すると)なぜですか?
私のアンドロイドアプリからデータを取得すると、すべて正常に動作します。 åäöの文字は正しく表現されています。ここでは奇妙な部分です:私のJavaアプリケーションからWindows上で同じデータを取得すると、åäöは "Ã¥"と他の奇妙な記号に置き換えられます。私のJavaアプリケーションからMacで同じデータを取得すると、åäöは他の奇妙な文字に置き換えられます。
私の質問は次のとおりです。なぜ、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);
文字列を生成して読み取るコード – waqaslam