1
        URL url = new URL("http://google.com");
        URLConnection connection = url.openConnection();

        connection.connect();

        System.out.println("conncetion successful.");

        String contentType = connection.getContentType();
        System.out.println(contentType);

contentTypeは"text/ html; charset=EUC-KR"です。(他のロケールでは異なる場合があります)、ドキュメントのエンコードはcontentTypeの1つと同じです。

しかし、 Web brwoser(IE、Firefox、Operaなど)を使用して同じURL( " http://google.com ")にアクセスすると、UTF-8でエンコードされたページであると表示されます。(ドキュメントのエンコーディングは実際にはUTF-8です。)

UTF-8でエンコードされたURLConnectionを取得したいのですが、APIがないようです。どうすればこれを達成できますか?

4

1 に答える 1

1

私は自分で答えを見つけました。

GoogleはリクエストでAccept-Charsetプロパティをチェックしませんが、User-Agentをチェックします。User-Agentが指定され、よく知られている場合(Opera、Mozilaなど)、GoogleはUTF-8で応答を送信します。それ以外の場合、応答はEUC-KRになります(他の環境では異なる場合があります)。

だから、ここに答えがあります:接続する前にこの行を追加してください。

connection.setRequestProperty("User-Agent", "Opera/9.80");

あなたは他のエージェントを好むかもしれません。(mozilaなど...)

于 2013-02-28T06:03:17.257 に答える