Google Weather APIから気象情報を読み取ろうとしています。Google天気APIによって返されたUmlautsが正しく表示されない
私のコードは次のようになります。
String googleWeatherUrl = "http://www.google.de/ig/api?weather=berlin&hl=de";
InputStream in = null;
String xmlString = "";
String line = "";
URL url = null;
try {
url = new URL(googleWeatherUrl);
in = url.openStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, UTF_8));
while ((line = bufferedReader.readLine()) != null) {
xmlString += line;
}
} catch (MalformedURLException e) {
} catch (IOException e) {
}
DocumentBuilder builder = null;
Document doc = null;
try {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource source = new InputSource(new StringReader(xmlString));
doc = builder.parse(source);
} catch (ParserConfigurationException e) {}
catch (FactoryConfigurationError e) {}
catch (SAXException e) {} catch (IOException e) {}
基本的にはシャルムのように動作しますが、返されたデータは、ウムラウト(ö、ü、ä、...)その後、それらの文字が正しく表示されていないが含まれている場合。 Eclipseだけでなくブラウザや対応するソースコードでは、長方形(またはそれに類似したもの)として表示されます。
実際には変数xmlStringに破損したウムラウトが含まれています。
誰かがそれについてアイデアを持っていますか?
おかげで、よろしく、 ポール
あなたはどここれらの文字を教えなければならない
はそうのような「Latin1のは」ためにあなたの入力ストリームのエンコーディングを変更迷った。 'xmlString'にはまだそれらが含まれていますか? – home
よろしくお願いします。私は質問を編集しました。 xmlStringは既に壊れています... – Paul
サーバーからの応答は、ISO-8859-1(偉大な仕事、Google)であり、UTF-8ではありません。それが間違っていた理由です。私は手動でエンコードを設定する必要はないと思う、おそらくOKです。そうでない場合は、[HttpURLConnection](http://docs.oracle.com/javase/1.4.2/docs/api/java/net/HttpURLConnection.html)を使用する以外にContent-Typeヘッダーを取得するか、エンコードを解析し、それに応じて設定します。私はサンの人たちが本当に考えてくれることを願っています。 –