我想从互联网上读取一个xml文件。你可以在here上找到它。
问题是它是用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>
显然,有一些我不能理解的东西,但我似乎遵循了几个网站上看到的代码。
发布于 2012-08-01 20:27:04
此文件不是编码为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-01 20:28:19
如果需要以给定的编码编写文件,请改用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();https://stackoverflow.com/questions/11759092
复制相似问题