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,无论哪种方式都应该这样做。