GoogleAppEngineを使用してデータを取得しています。GAEからデータを送信する前に、コンテンツタイプを「text / html」に設定し、文字エンコードを「UTF-8」に設定しました。文字åöäがサーバーデータベースに正しく保存されていると確信しています。
私のAndroidアプリからデータを取得するとき、すべてが正常に機能します。文字åäöは正しく表現されています。奇妙な部分は次のとおりです。Windows上のJavaアプリから同じデータを取得すると、åäöは「Ã¥」やその他の奇妙な記号に置き換えられます。MacのJavaアプリから同じデータを取得すると、åäöは他の奇妙な文字に置き換えられます。
だから私の質問は:Javaアプリが読み取らないのにAndroidアプリが文字列を正しく読み取るのはなぜですか?
編集:
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);