2

こんにちは私はjavaを使用してドイツ語の文字を含むWebページのコンテンツを読みたいのですが、残念ながら、ドイツ語の文字は奇妙な文字として表示されます。ここに助けがあれば私のコードです:

String link = "some german link";

            URL url = new URL(link);
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println(inputLine);
            }
4

4 に答える 4

6

次のように、InputStreamReader の文字セットを指定する必要があります。

InputStreamReader(url.openStream(), "UTF-8") 
于 2011-05-31T14:16:42.637 に答える
2

正しいエンコーディングを設定する必要があります。エンコーディングは HTTP ヘッダーで確認できます。

Content-Type: text/html; charset=ISO-8859-1

これは (X)HTML ドキュメントで上書きされる可能性があります。HTML 文字エンコーディングを参照してください。

Web ページをエラーなしで解析するには、さまざまな追加の問題を考慮する必要があると想像できます。ただし、Java で使用できるさまざまな HTTP クライアント ライブラリがありますorg.apache.httpcomponents。コードは次のようになります。

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://www.spiegel.de");

try
{
  HttpResponse response = httpclient.execute(httpGet);
  HttpEntity entity = response.getEntity();
  if (entity != null)
  {
    System.out.println(EntityUtils.toString(entity));
  }
}
catch (ClientProtocolException e) {e.printStackTrace();}
catch (IOException e) {e.printStackTrace();}

これはMavenアーティファクトです:

<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.1.1</version>
  <type>jar</type>
  <scope>compile</scope>
</dependency>
于 2011-05-31T14:22:31.623 に答える
0

文字セットを設定してみてください。

new BufferedReader(new InputStreamReader(url.openStream(), Charset.forName("UTF-8") ));
于 2011-05-31T14:17:03.277 に答える
0

まず、使用しているフォントが、表示しようとしている特定のドイツ語の文字をサポートできることを確認してください。多くのフォントにはすべての文字が含まれているわけではありません。単純な「文字の欠落」の問題である場合、他の理由を探すのは非常に困難です。

それが問題でない場合は、入力または出力のいずれかが間違った文字セットになっています。文字セットは、文字を表す数字をグリフ (または文字を表す画像) にマップする方法を決定します。Java は通常、内部で UTF-8 を使用します。したがって、出力ストリームはおそらく問題ではありません。入力ストリームを確認してください。

于 2011-05-31T14:17:42.153 に答える