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

时间:2012-06-07 14:13:20

标签: java database string character-encoding system.printing

我无法从我的网络服务向我的数据库发送或显示带有特殊字符的文本。在我的日食中,我将字符编码设置为UTF-8,但它仍然不允许我显示字符。例如,简单的打印,如下面的代码

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

OR

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

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

4 个答案:

答案 0 :(得分:12)

如果您使用的是Eclipse,那么

  1. 右键单击您的项目。
  2. 转到“属性”
  3. 在“文字”中选择UTF-8 文件编码“
  4. enter image description here

答案 1 :(得分:9)

看看是否有效。

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

要在DB中存储,请使用以下命令以UTF-8

显式编码字符串
String newString = new String(test.getBytes(), "UTF8");

答案 2 :(得分:1)

是的,它是XXI。世纪,我们仍在努力解决字符编码......

我的第一个猜测是:

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

答案 3 :(得分:0)

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