我在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上似乎没有正确读取文件 - 重音字符出现故障。我知道不同的机器可以有不同的默认字符集,但我给它正确的字符集。为什么不使用它?
答案 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是否会有所帮助。可能是一个设置问题。