2

インターネットからxmlファイルを読みたいです。ここで見つけることができます。
問題は、UTF-8 でエンコードされており、後で解析するためにファイルに保存する必要があることです。私はすでにそれについて多くのトピックを読みましたが、ここに私が思いついたものがあります:

BufferedReader in;
String readLine;
try
{
    in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
    BufferedWriter out = new BufferedWriter(new FileWriter(file));

    while ((readLine = in.readLine()) != null)
        out.write(readLine+"\n");

    out.close();
}

catch (UnsupportedEncodingException e)
{
    e.printStackTrace();
}

catch (IOException e)
{
    e.printStackTrace();
}

このコードは次の行まで機能します:<title>Chérie FM</title>
デバッグすると、次のようになります:<title>Ch�rie FM</title>

明らかに、理解できないことがありますが、いくつかのWebサイトで見られるコードに従っているようです。

4

2 に答える 2

8

このファイルは としてエンコードされていませUTF-8ISO-8859-1。.

コードを次のように変更します。

BufferedReader in;
String readLine;
try
{
    in = new BufferedReader(new InputStreamReader(url.openStream(), "ISO-8859-1"));
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(file) , "UTF-8"));

    while ((readLine = in.readLine()) != null)
        out.write(readLine+"\n");
    out.flush();
    out.close();
}

catch (UnsupportedEncodingException e)
{
    e.printStackTrace();
}

catch (IOException e)
{
    e.printStackTrace();
}

期待どおりの結果が得られるはずです。

于 2012-08-01T12:27:03.523 に答える
-1

特定のエンコーディングでファイルを書き込む必要がある場合は、代わりに FileOutputStream を使用してください。

in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
FileOutputStream out = new FileOutputStream(file);

while ((readLine = in.readLine()) != null)
    write((readLine+"\n").getBytes("UTF-8"));

out.close();
于 2012-08-01T12:28:19.097 に答える