3

在eclipse中,我将默认编码更改为ISO-8859-1。然后我写了这个:

String str = "Русский язык ";
PrintStream ps = new PrintStream(System.out, true, "UTF-8");
ps.print(str);

它应该正确打印String,因为我正在指定UTF-8编码。但是,它不打印。

4

4 回答 4

4

字符编码只支持0到255之间的ISO-8859-1字符,其他的都可能变成'?'

于 2012-08-21T19:12:01.180 回答
4

如果将源文件(.java文件)保存为 ISO-8859-1,str则 javac 将使用 ISO-8859-1 对其进行编码。您的问题不在于创建PrintStreamstr您正在打印的内容从一开始就是错误的。

于 2012-08-21T19:23:35.067 回答
0

您基本上是在告诉 PrintStream 编写器期望输入字符为 UTF-8 编码并将其输出为 UTF-8。没有转换。如果您将 IDE 设置为使用 ISO-8859-1 作为文件的字符编码,该文件又包含输入字符串,而不是将 ISO-8859-1 编码的字符通过管道传输到 UTF-8 预期的写入器。因此作者将接收到的字节视为 UTF 编码字符,这将导致数据垃圾。

将您的 IDE 设置为以 UTF-8 对源文件进行编码,并检查您的字符是否正确显示和存储。或者告诉您的作者将它们视为 ISO-8859-1,无论哪种方式都应该这样做。

于 2012-08-21T19:35:01.443 回答
0

是的,您发送此输出的终端似乎不支持此编码。

如果您正在运行 Eclipse,则可以按如下方式设置编码:

  • 在运行配置...->通用->编码->其他
  • 选择 UTF-8
于 2012-08-21T19:17:47.103 回答