Java中的字符编码
在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,则可以按如下方式设置编码:
- 在运行配置中……->通用 – >编码 – >其他
- 选择UTF-8
您基本上告诉PrintStream编写器期望输入字符是UTF-8编码并将其输出为UTF-8。 没有转换。 如果将IDE设置为使用ISO-8859-1作为文件的字符编码,而该文件又包含输入字符串,而不是将ISO-8859-1编码字符管道输入到UTF-8期望编写器中。 因此,作者将接收的字节视为UTF编码字符,这将导致数据垃圾。
将IDE设置为以UTF-8编码源文件,并检查字符是否正确显示和存储。 或者告诉你的作者将它们视为ISO-8859-1,无论哪种方式都应该这样做。