2012-01-06 5 views
1

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に破損したウムラウトが含まれています。

誰かがそれについてアイデアを持っていますか?

おかげで、よろしく、 ポール

+0

あなたはどここれらの文字を教えなければならない

はそうのような「Latin1のは」ためにあなたの入力ストリームのエンコーディングを変更

迷った。 'xmlString'にはまだそれらが含まれていますか? – home

+0

よろしくお願いします。私は質問を編集しました。 xmlStringは既に壊れています... – Paul

+0

サーバーからの応答は、ISO-8859-1(偉大な仕事、Google)であり、UTF-8ではありません。それが間違っていた理由です。私は手動でエンコードを設定する必要はないと思う、おそらくOKです。そうでない場合は、[HttpURLConnection](http://docs.oracle.com/javase/1.4.2/docs/api/java/net/HttpURLConnection.html)を使用する以外にContent-Typeヘッダーを取得するか、エンコードを解析し、それに応じて設定します。私はサンの人たちが本当に考えてくれることを願っています。 –

答えて

3

は、文字エンコーディングの魔法の世界へようこそ。ドアでラックにあなたの正気を残してください。

source.setEncoding(encoding)を使用し、ウェブページに正しい文字エンコーディングを指定する必要があります。運がよければ、実際にはヘッダーにエンコードが指定されている可能性があります。

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, Charset.forName("Latin1")));

私のマシン上でテストしたとき、これは適切なドイツ語の文字を返します:

<current_conditions><condition data="Meistens bewölkt"/>

関連する問題