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

Ama*_*nni 15 java database string character-encoding system.printing

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

String test ="??????"; 
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)

要么

String test ="??????";
String query = "insert into communication (`test`) VALUES ('"+ test +"');
PreparedStatement preparedStmt1 = con.prepareStatement(query);
preparedStmt1.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

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

Bur*_*RAS 13

如果你正在使用Eclipse,那么

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

在此输入图像描述


San*_*osh 9

看看这是否有效.

    PrintStream out = new PrintStream(System.out, true, "UTF-8");
    out.println(test);
Run Code Online (Sandbox Code Playgroud)

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

String newString = new String(test.getBytes(), "UTF8");
Run Code Online (Sandbox Code Playgroud)


rle*_*ndi 3

是的,是XXI。世纪以来,我们仍在努力解决诸如字符编码之类的问题......

我的第一个猜测是:

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