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>

显然,有些东西我不明白,但在我看来,我遵循了在几个网站上看到的代码。

4

2 回答 2

8

此文件未编码为UTF-8,它是ISO-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 回答