1

我在 Java 中编码有问题。我在 Eclipse UTF-8 中设置了编码。当我从 Eclipse 运行我的应用程序时,一切正常,但是当我导出到 jar 并通过双击运行它时,我有????人物。当我从命令行运行时: java -jar app.jar 一切正常。问题在于从其他站点下载的数据(该站点是 utf8 编码的)。有什么解决办法?

编辑: 在所有平台上,当我从命令行运行时,defaultEncoding() 是 UTF-8。但是当我双击运行时:Mac:US-ASCII Windows:windows-1250

我已经编写了编码方法,但它仍然无法正常工作:

public String getPageContent(String url) throws MalformedURLException, IOException
{
    URL urlReader;
    InputStream response = null;
    BufferedReader reader;
    String pageContent = "";
    urlReader = new URL(url);
    response = urlReader.openStream();
    reader = new BufferedReader(new InputStreamReader(response));


    for (String line; (line = reader.readLine()) != null;) {
        pageContent += this.encode(line, "UTF-8");

    }   
    reader.close();
    return pageContent;        
}
public String encode(String s, String charset)
{
        try {
            byte[] b = s.getBytes(charset);
            s = new String(b, charset);
            return s;
        } catch (UnsupportedEncodingException e1) {


    // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    return s;

}

4

2 回答 2

2

构建 InputStreamReader 时需要指定 UTF-8 字符集。

reader = new BufferedReader(new InputStreamReader(response, "UTF-8"));

您根本不应该在收到字符串后尝试重新编码它们。

于 2012-10-17T09:55:43.397 回答
0

设置默认的 Java 字符编码? 这里已经是一个讨论过的线程,其中包含更多详细信息。希望这有帮助

于 2012-10-16T17:16:36.760 回答