首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java从互联网上读取UTF-8编码的文本文件

用Java从互联网上读取UTF-8编码的文本文件
EN

Stack Overflow用户
提问于 2012-08-01 20:21:02
回答 2查看 3.3K关注 0票数 2

我想从互联网上读取一个xml文件。你可以在here上找到它。

问题是它是用UTF-8编码的,我需要将它存储到一个文件中,以便稍后解析它。我已经读了很多关于这方面的话题,下面是我想出来的:

代码语言:javascript
复制
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>

显然,有一些我不能理解的东西,但我似乎遵循了几个网站上看到的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-01 20:27:04

此文件不是编码为UTF-8的,而是ISO-8859-1

通过将您的代码更改为:

代码语言:javascript
复制
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();
}

你应该会得到预期的结果。

票数 8
EN

Stack Overflow用户

发布于 2012-08-01 20:28:19

如果需要以给定的编码编写文件,请改用FileOutputStream。

代码语言:javascript
复制
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();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11759092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档