2

我尝试了以下方法:

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

那么,我做错了什么?

谢谢。

附言

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

4

5 回答 5

3

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

在此处输入图像描述

于 2012-05-25T13:56:09.193 回答
2

System.out.println如果你有最新版本的 eclipse ,你所做的应该可以工作,即使是简单的。

请看以下内容:

  • 您正在使用的 Eclipse 版本
  • 文件是否编码正确。请参阅@Matthew 的回答。我认为会是这种情况,否则 Eclipse 将不允许您保存文件(会警告“不支持的字符”)
  • 控制台字体 ( Windows -> Preferences -> Fonts -> Default Console Font)
  • 将文本保存到文件时是否正确获取字符

在此处输入图像描述

于 2012-05-25T13:54:57.757 回答
1

实际上,复制您的代码并在我的计算机上运行它给了我以下输出:

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

看起来除了最后一行外,所有行都有效。获取您的系统默认字符集(请参阅此答案)。我的是UTF-8。看看更改默认字符集是否会有所不同。

以下任何一行都将获得您的默认字符集:

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

要更改默认编码,请参阅此答案

于 2012-05-25T13:52:23.097 回答
0

确保在创建类时分配文本文件编码值UTF-8。稍后使用任何其他文本文件编码创建一个类后,您将无法更改编码样式,即使 eclipse 允许您它不会反映。因此,使用 TextFile Encoding 创建一个新类UTF 8。它肯定会工作。

编辑:在您的情况下,尽管您尝试以编程方式分配文本文件编码,但它不会产生任何影响,它正在采用容器继承编码(Cp1252)

于 2012-05-25T14:10:34.647 回答
0

使用最新的 Eclipse 版本帮助我在控制台上实现了 UTF-8 编码我使用了 Luna 版本的 Eclipse 并设置了 Properties->Info->Others->UTF-8

于 2015-08-05T04:46:22.633 回答