如何获得正确的编码?

时间:2009-03-30 01:49:12

标签: java

我有utf-8文件,我想阅读并在我的java程序中显示。

在eclipse控制台(stdout)或摇摆中我得到问号而不是正确的字符。

BufferedReader fr = new BufferedReader(
                      new InputStreamReader(
                      new FileInputStream(f),"UTF-8"));
System.out.println(fr.readLine());

inpuStreamReader.getEncoding() //prints me UTF-8

我通常没有问题在linux控制台或firefox等上显示重音字母。

为什么会这样?我生病了:/

谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

我不是Java专家,但您似乎正在创建一个UTF-8 InputStreamReader,其文件不一定是UTF-8。

另请参阅:Java : How to determine the correct charset encoding of a stream

答案 1 :(得分:0)

听起来Eclipse控制台没有处理UTF-8字符,和/或为该控制台配置的字体不支持您尝试显示的Unicode字符。

如果将Eclipse配置为期望UTF-8字符,并且还要确保使用的字体可以显示文件中编码的Unicode字符,则可以使其工作。

来自Eclipse 3.1 New and Noteworthy页面:

  

您可以将控制台配置为   使用字符显示输出   编码与默认编码不同   使用控制台编码设置   发布的Common选项卡   配置。

至于Swing,我认为您需要选择正确的字体。

答案 2 :(得分:0)

当系统必须显示Unicode字符时,有几个参数在起作用 -

  • 首先想到的是输入流或缓冲区的编码,你已经想到了。
  • 列表中的下一个是应用程序的Unicode功能 - Eclipse支持在控制台输出中显示Unicode字符; with a workaround:)。
  • 我脑海中最后一个是控制台输出中使用的字体 - 并非所有字体都带有用于显示Unicode字符的字形。

更新

不显示Unicode字符很可能是因为Cp1252用于编码控制台输出中的字符。这可以通过访问应用程序的运行配置来修改 - 它出现在运行时配置的Common选项卡中。