在eclipse中,我将默认编码更改为ISO-8859-1。然后我写了这个:
String str = "Русский язык ";
PrintStream ps = new PrintStream(System.out, true, "UTF-8");
ps.print(str);
它应该正确打印String
,因为我正在指定UTF-8
编码。但是,它不打印。
在eclipse中,我将默认编码更改为ISO-8859-1。然后我写了这个:
String str = "Русский язык ";
PrintStream ps = new PrintStream(System.out, true, "UTF-8");
ps.print(str);
它应该正确打印String
,因为我正在指定UTF-8
编码。但是,它不打印。
字符编码只支持0到255之间的ISO-8859-1
字符,其他的都可能变成'?'
如果将源文件(.java
文件)保存为 ISO-8859-1,str
则 javac 将使用 ISO-8859-1 对其进行编码。您的问题不在于创建PrintStream
:str
您正在打印的内容从一开始就是错误的。
您基本上是在告诉 PrintStream 编写器期望输入字符为 UTF-8 编码并将其输出为 UTF-8。没有转换。如果您将 IDE 设置为使用 ISO-8859-1 作为文件的字符编码,该文件又包含输入字符串,而不是将 ISO-8859-1 编码的字符通过管道传输到 UTF-8 预期的写入器。因此作者将接收到的字节视为 UTF 编码字符,这将导致数据垃圾。
将您的 IDE 设置为以 UTF-8 对源文件进行编码,并检查您的字符是否正确显示和存储。或者告诉您的作者将它们视为 ISO-8859-1,无论哪种方式都应该这样做。
是的,您发送此输出的终端似乎不支持此编码。
如果您正在运行 Eclipse,则可以按如下方式设置编码: