2012-05-25 77 views
2

我曾尝试以下:如何将“rājshāhi”打印到Eclipse输出控制台?

System.out.println("rājshāhi"); 
new PrintWriter(new OutputStreamWriter(System.out), true).println("rājshāhi"); 
new PrintWriter(new OutputStreamWriter(System.out, "UTF-8"), true).println("rājshāhi"); 
new PrintWriter(new OutputStreamWriter(System.out, "ISO-8859-1"), true).println("rājshāhi"); 

其产生以下的输出:

r?jsh?hi 
r?jsh?hi 
rÄ?jshÄ?hi 
r?jsh?hi 

那么,我究竟做错了什么?

谢谢。

P.S.

我在Windows 7上使用Eclipse Indigo。输出转到Eclipse输出控制台。

回答

3

Java文件必须正确编码。看在该文件的属性,并正确设置编码:

enter image description here

+0

这是正确的答案。确认! – guness

+0

确实有效。 – mark

+0

控制台输出使用为文件定义的编码。所以,即使你的程序是正确的,控制台输出可能会显示乱码。不要使用控制台输出。尝试将它写入使用正确的编码文件,并检查结果在任何文本查看器。希望这可以帮助 – Ravi

1

其实,复制你的代码,并在我的电脑上运行它给了我下面的输出:

rājshāhi 
rājshāhi 
rājshāhi 
r?jsh?hi 

它看起来像所有线路除了最后一个工作。获取您的系统默认字符集(请参阅this answer)。我的UTF-8。看看改变你的默认字符集是否有所不同。

以下行的任会得到您的默认字符集:

System.out.println(System.getProperty("file.encoding")); 
System.out.println(Charset.defaultCharset()); 

要更改默认编码,见this answer

+0

你能告诉我确切的java命令来执行呢? – mark

+0

@mark请参阅我的编辑。 – kentcdodds

1

如果你有最新版本的eclipse,你应该怎么做,即使是简单的System.out.println

请看下面:

  • 日食的版本使用的是
  • 文件是否被正确编码。见@马修的答案。我想这肯定是因为偏食,否则不会允许你保存文件(将警告“不支持的字符”)
  • 的字体为控制台(Windows -> Preferences -> Fonts -> Default Console Font
  • 当您将文本保存到一个文件是否情况你得到正确的字符

enter image description here

+0

我很确定它与JVM使用的默认编码是系统默认值有关。因此,事实上,它在你的工作的罚款可能有,为什么它不工作老年退休金计划没有直接的关系。 (见[这个答案](http://stackoverflow.com/a/623036/971592)) – kentcdodds

+0

@kentcdodds它可能不仅仅是JVM的默认编码(但肯定是一种可能性)。当java类没有保存在正确编码的文件中时,我遇到过这种情况。这就是为什么我要求OP转储到文件(而不是打印到控制台) – Nivas

0

确保当你创建你的类分配文本文件编码值UTF-8。 一旦使用其他任何文本文件编码创建了一个类,您将无法更改Encoding syle,即使eclipse允许您也不会反映。 因此,使用TextFile编码UTF 8创建一个新类。它将工作正常。

编辑:在你的情况虽然你正试图assing文本文件编码编程是没有把它走的是容器继承编码(的Cp1252)

0

使用最新的Eclipse版本有任何影响帮助我才达到UTF-8在控制台上 编码我用月神的Eclipse版本并设置属性 - >信息 - >其他 - > UTF-8

相关问题