私はこの質問を短くて甘いものにします。私は、URLを文字列として読み込み、WebページのHTMLソースの文字列を返す関数を持っています。ここにあります:JavaのWebページからHTMLソースを読み取っているときに、特定の文字が正しく表示されない
public static String getHTML(String urlToRead) throws Exception // Returns the source code of a given URL.
{
StringBuilder result = new StringBuilder();
URL url = new URL(urlToRead);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), Charset.forName("UTF-8")));
String line;
while ((line = rd.readLine()) != null)
{
result.append(line + System.getProperty("line.separator"));
}
rd.close();
result.toString();
}
小さな奇妙なものを除いて、それは魅力的です。特定の文字がInputStreamReaderによって正しく読み取られていません。 "ł"文字は正しく読み込まれず、代わりに "?"文字に置き換えられます。それはこれまで私がこれまで見つけた唯一のキャラクターですが、他の文字が正しく読み込まれていないことは分かりません。
文字セットの問題のようです。コードからわかるように私はUTF-8を使用しています。私がその場所で使ってみた他の文字セットは、どちらも完全に機能していないか、単なる1文字以上の問題を抱えています。
この問題の原因にはどのようなものがありますか?どんな助けでも大歓迎です!
さて、レスポンスは 'UTF-8'でエンコードされていると思いますか?なぜサーバーが使用している文字セットを見つけるために接続のプロパティをチェックしないのですか? – Holger
@Holger私は基本的にHTMLソースを見て、 'を見ました。私はそれがUTF-8であると仮定するのは間違っていたのですか?私はまだこのハハにはまったく新しいです。 – Step
はい、私はただエンコードがUTF-8であることを確認しました。 – Step