使用System.out.println显示特殊字符

我在使用Web服务中的特殊字符向我的数据库发送或显示文本时遇到问题。 在我的日食中,我将字符编码设置为UTF-8,但它仍然不允许我显示字符。 例如,简单的打印,如下面的代码

String test ="привет"; System.out.println(test); 

要么

 String test ="привет"; String query = "insert into communication (`test`) VALUES ('"+ test +"'); PreparedStatement preparedStmt1 = con.prepareStatement(query); preparedStmt1.executeUpdate(); 

控制台上的结果以及如果我将其发送到我的数据库是??????。 如何在控制台上正确显示它并希望在数据库中显示

是的,它的XXI。 世纪,我们仍然在努力处理字符编码……

我的第一个猜测是:

  1. 您的源文件编码可能是错误的(您是否使用像Maven这样的构建工具?可能还需要在那里设置源代码编码),
  2. 您的控制台编码可能是错误的(您是否在Windows下?默认情况下,默认的命令行控制台不是UTF,它依赖于本地,但在注册表中可以设置小编码)
  3. 你的数据库编码可能不正确(表编码是什么,你可以检查吗?)

如果您正在使用Eclipse,那么

  1. 右键单击你的项目。
  2. 转到“属性”
  3. 在“文本文件编码”中选择UTF-8

在此处输入图像描述

看看这是否有效。

  PrintStream out = new PrintStream(System.out, true, "UTF-8"); out.println(test); 

要在DB中存储,请使用以下命令以UTF-8显式编码字符串

 String newString = new String(test.getBytes(), "UTF8"); 

您可能需要首先将字符串解码为ISO-8859,然后将其编码为UTF-8