我编写此代码以从网站获取html源代码。
HttpURLConnection connection;
OutputStreamWriter request = null;
URL url = null;
String response = null;
String parameters = "aranan="+et.getText();
try
{
url = new URL("http://www.fragmanfan.com/arama.asp");
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
request = new OutputStreamWriter(connection.getOutputStream());
request.write(parameters);
request.flush();
String line = "";
InputStreamReader isr = new InputStreamReader(connection.getInputStream());
BufferedReader reader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
// Response from server after login process will be stored in response variable.
response = sb.toString();
// You can perform UI operations here
browser.loadDataWithBaseURL(null, response,"text/html", "UTF-8", null);
isr.close();
reader.close();
}
catch(IOException e)
{
// Error
}
}
});
但是有一个问题。它是:响应(具有html源的变量)不是utf-8格式。 我怎么解决这个问题? 感谢。
答案 0 :(得分:0)
。 。
InputStreamReader isr = new InputStreamReader(connection.getInputStream(),"ISO-8859-9");
。 。
答案 1 :(得分:-1)
由于您的回复似乎是单个字符串中的HTML网页,因此您应该确保页面的head标签包含定义编码的标签。如果不是,您可以自己将其附加到StringBuilder。 以下是如何做到这一点:
final StringBuilder sb =
new StringBuilder("<html><head>"+ "<meta http-equiv=\"content-type\"content=\"text/html;charset=utf-8\" />"+ "</head><body>");
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
response = sb.toString();
sb.append(response);
sb.append("</body></html>");
然后您可以将HTML正确加载到您的webview /浏览器中。 (这对我有用,所以我肯定知道它确实有效=])
Pd积。确保接受正确回答您问题的答案,以便人们不断回答您未来的问题。 https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work