Jar资源中的Unicode

时间:2009-08-24 01:07:02

标签: java unicode utf-8 jar

我在jar中有一个Unicode(UTF-8无BOM)文本文件,它是作为资源加载的。

URL resource = MyClass.class.getResource("datafile.csv");
InputStream stream = resource.openStream();
BufferedReader reader = new BufferedReader(
    new InputStreamReader(stream, Charset.forName("UTF-8")));

这在Windows上工作正常,但在Linux上似乎没有正确读取文件 - 重音字符出现故障。我知道不同的机器可以有不同的默认字符集,但我给它正确的字符集。为什么不使用它?

2 个答案:

答案 0 :(得分:2)

阅读部分看起来是正确的,我一直在Linux上使用它。

我怀疑您在将文本导出到网页时使用默认编码。由于Linux和Windows上的默认编码不同,您会看到不同的结果。

例如,如果在servlet中执行类似的操作,则使用默认编码,

PrintWriter out = response.getWriter();
out.println(text);

你需要像这样专门写UTF-8,

 response.setContentType("text/html; charset=UTF-8");
 out = new PrintWriter(
    new OutputStreamWriter(response.getOutputStream(), "UTF-8"), true);
 out.println(text);

答案 1 :(得分:1)

我想知道审核UTF-8 on Linux是否会有所帮助。可能是一个设置问题。