【问题标题】:how to handle utf-8 content from website如何处理来自网站的 utf-8 内容
【发布时间】:2013-02-22 20:50:02
【问题描述】:

我是java新手,我被这个函数困住了:

public String getFromUrl(String url){
    String content = "";
    try{
        URL U = new URL(url);
        URLConnection conn = U.openConnection();
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)");
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
        String line;
        while((line = reader.readLine()) != null)content += line+"\r\n";
        reader.close();
    }
    catch(Exception e){}
    return content;
}

我总是得到问号而不是 utf-8 符号! 我做错了什么?

我读到了post

首先:我不明白为什么要使用字节数组?

第二个:如果我写的话,“while循环”在这种情况下应该是什么样子的

while((line = reader.readLine()) != null)content = line.getBytes("UTF-8");

我的 Eclipse 说“局部变量内容可能尚未初始化”

第三:我应该如何将字节数组转换回字符串?

然后我读到this one。我什至没有尝试这篇文章中的方式,因为我正在尝试编写一个模拟浏览器获取和发布请求的函数。看来我发现了如何使用 URL 类执行它,所以我不想使用任何其他类和方法。

现在我唯一的问题是如何处理 utf-8 内容。

任何帮助!

【问题讨论】:

  • 您对网站实际上提供 UTF-8 的确定性有多大?
  • 处理 catch 异常。这是比 Stackoverflow 更直接的答案。如您所见,使用 getBytes 在这里是无稽之谈。
  • 我正在解析我自己的网站!所以我绝对确定它的 utf-8

标签: java utf-8 web


【解决方案1】:

转储:

String encoding = conn.getContentEncoding();

如果不为null,您可以将其用于阅读器。

并转储可能捕获的异常。

【讨论】:

  • 好吧,我只是尝试添加以下命令: File f = new File("C:\\output.txt"); FileUtils.write(f, content, "UTF-8");所有 utf-8 符号在 output.txt 中都显示得很好,现在我有点困惑。是不是我的 Eclipse 没有正确显示 utf-8 符号?
  • eclipse 窗口/首选项/工作区/文本文件编码可能。将 eclipse 设置为 UTF-8 似乎最适合具有国际意识的项目。
  • 是的,就是窗口/首选项/工作区/文本文件编码为utf-8,一切正常!
猜你喜欢
  • 2010-12-09
  • 2013-10-09
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 2012-05-31
  • 2015-04-13
  • 2018-08-26
  • 2010-11-10
相关资源
最近更新 更多