0

openConnection を使用して xml ファイルをダウンロードして保存したいと考えています。

問題は、ファイルを保存するときに間違った文字セットがあることです。

私のコードは次のとおりです。

URL url = new URL(partnersEntity.getUrl());

            URLConnection urlConnection = url.openConnection();
            urlConnection.setRequestProperty("Content-Length", "500000");
            urlConnection.setRequestProperty("Accept-Charset", "UTF-8");
            urlConnection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");


            Calendar calendar = Calendar.getInstance();
            Date now = calendar.getTime();
            Timestamp currentTimestamp = new Timestamp(now.getTime());

            File file = new File(myFile);

            FileWriter writer = new FileWriter(file);

            IOUtils.copy(urlConnection.getInputStream(), writer);
            writer.close();

その後、ファイルに「??」のようなマークが表示されます 特別なチャーターの場所で。

何を変更すればよいですか?

4

2 に答える 2

2

この状況ではリーダー/ライターを使用せず、xml をそのままにしておきます。

        FileOutputStream out = new FileOutputStream(file);

        IOUtils.copy(urlConnection.getInputStream(), out);

FileWriter を使用すると、プラットフォームのデフォルトの文字セットを使用して xml データを書き込むことになりますが、これは決してやりたいことではありません。xml は常に、テキスト データではなく、バイナリ データとして扱います。

于 2013-03-01T15:11:26.133 に答える
1

(1) 読み込んでいるリソースが本当に UTF-8 であることを確認します。「Accept-Charset」を使用してリクエストしましたが、それは保証されません。でも。UTF-8だとしましょう。

(2) 使用しているライターの文字セットを指定してください。FileWriter を使用すると、実行している環境の「デフォルト」の文字セットを取得できます... UTF-8 ではない可能性があります。OutputStreamWriter を使用して特定することをお勧めします。

OutputStream os = new OutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(os, "UTF-8");

(3) 受信ストリームを解釈する方法をコピーに伝えます。

IOUtils.copy(urlConnection.getInputStream(), writer, "UTF-8");
于 2013-03-01T15:10:11.193 に答える