この関数は、UTF8 でサーバーに要求を送信し、UTF8 で受信します。
public String downloadPage(String _url, String _reqm, String _params) {
try {
if (_reqm == null || (_reqm == "POST" && _params == null))
throw new IOException();
URL _myURL = null;
if (_reqm == "GET") {
_myURL = new URL(_params == null ? _url : _url + "?" + _params); //URLEncoder.encode(_params, "UTF-8")
} else if (_reqm == "POST") {
_myURL = new URL(_url);
}
HttpURLConnection pageConnection = (HttpURLConnection) _myURL.openConnection();
pageConnection.setUseCaches(false);
pageConnection.setDoOutput(true);
pageConnection.setDoInput(true);
pageConnection.setInstanceFollowRedirects(false);
pageConnection.setRequestMethod(_reqm);
pageConnection.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml");
pageConnection.setRequestProperty("Accept-Charset", "UTF-8");
pageConnection.setRequestProperty("charset", "UTF-8");
pageConnection.setRequestProperty("Connection", "keep-alive");
pageConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31");
if (_reqm == "POST") {
pageConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStreamWriter writer = new OutputStreamWriter(pageConnection.getOutputStream());
writer.write(_params); //URLEncoder.encode(_params, "UTF-8")
writer.flush();
writer.close();
}
BufferedReader reader = new BufferedReader(new InputStreamReader(pageConnection.getInputStream()));
String inputLine;
StringBuilder text = new StringBuilder();
while ((inputLine = reader.readLine()) != null) {
text.append(inputLine + "\n");
}
reader.close();
return text.toString();
} catch (IOException e) {
e.printStackTrace();
return "ERROR";
}
}
この関数は、UTF8 文字列を UTF8 でファイルに保存します。
public void writeFile(String _content, String _fileName) {
try {
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(_fileName)), "UTF-8"));
out.write(_content);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
私は次のように2つを使用します。
String downloadedPage = myTelecom.downloadPage("http://www.sbrf.ru/moscow/ru/", "GET", null);
myIO.writeFile(downloadedPage, "original.html");
エンコーディングの複数の指示にもかかわらず、私はそれを機能させることができませんでした. リクエスト方法やドメイン、「Accept-Charset」や「charset」に関わらず、動作しません。
ロシア人もハンガリー人のキャラクターも、本来あるべき姿には見えないし、どこを間違えたのかも分からない。
何が問題なのですか?