サーバーからいくつかの txt ファイルを抽出しようとしていますが、ファイルの文字セットは UTF-8 です。私のコードはファイルをダウンロードできますが、いくつかの奇妙な文字も生成されました。
シドニーの淡水化プラント
クロムを使用して直接ダウンロードすると、次のように正しく表示されます。
シドニーの淡水化プラント
以下は私の現在のコードです:
public String getURL(String url) throws Exception
{
StringBuffer result=new StringBuffer();
if(StringUtils.isNotBlank(url) && url.startsWith("http"))
{
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter("http.protocol.content-charset", "UTF-8");
HttpGet request = new HttpGet(url);
// add request header
//request.addHeader("User-Agent", "");
//request.addHeader(Content-Type: text/html; charset=UTF-8)
HttpResponse response = client.execute(request);
System.out.println("Response Code : " + response.getStatusLine().getStatusCode());
if(response.getStatusLine().getStatusCode() == 200)
{
//System.out.println(response.getEntity().getContentType().getValue());
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent(),"UTF-8"));
//result=(EntityUtils.getContentCharSet(response.getEntity()));
boolean flagIn = false;
String sCurrentLine;
while ((sCurrentLine = rd.readLine()) != null)
{
//if(flagIn==false)
//{
// sCurrentLine = removeUTF8BOM(sCurrentLine);
//}
if(flagIn)
{
result.append("\n");
}
result.append(sCurrentLine);
flagIn = true;
}
}
}
return result.toString();
}
以下は、呼び出しを試みたメソッドです。
System.out.println(former.getURL("http://photos.gcdis-india.com/png/bio/QSPNGC1002.txt"));
どの部分を修正すればよいか考えていますか?特別な http ヘッダーを提供する必要がありますか? それともリーダーが問題ですか?