在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
编码。但是,它并没有打印出来。
ISO-8859-1
字符编码只支持 0 到 255 范围内的字符,其他字符将会被转换成“?”。
.java
文件)保存为ISO-8859-1,则str
将由javac使用ISO-8859-1进行编码。您的问题不在于创建PrintStream
:您要打印的str
从一开始就是错误的。是的,看起来你发送输出的终端不支持这种编码。
如果你正在运行Eclipse,你可以按照以下步骤设置编码:
你基本上是告诉PrintStream编写器期望输入字符为UTF-8编码,并将其作为UTF-8输出。没有转换。如果您将IDE设置为使用ISO-8859-1作为文件的字符编码,该文件包含输入字符串,那么您将ISO-8859-1编码的字符传输到期望UTF-8的编写器中。因此,编写器将接收到的字节视为UTF编码的字符,这将导致数据垃圾。
要么将IDE设置为以UTF-8编码源文件并检查字符是否正确显示和存储,要么告诉编写器将它们视为ISO-8859-1,两种方法都可以。
PrintStream
无关。我想知道字符“Русский язык”怎么可能保存在ISO-8859-1中。Eclipse是否会自动转换为\uxxxx
语法? - Marko Topolnik