0

この関数は、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」に関わらず、動作しません。

ロシア人もハンガリー人のキャラクターも、本来あるべき姿には見えないし、どこを間違えたのかも分からない。

何が問題なのですか?

4

0 に答える 0