使用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。 世纪,我们仍然在努力处理字符编码……
我的第一个猜测是:
- 您的源文件编码可能是错误的(您是否使用像Maven这样的构建工具?可能还需要在那里设置源代码编码),
- 您的控制台编码可能是错误的(您是否在Windows下?默认情况下,默认的命令行控制台不是UTF,它依赖于本地,但在注册表中可以设置小编码)
- 你的数据库编码可能不正确(表编码是什么,你可以检查吗?)
如果您正在使用Eclipse,那么
- 右键单击你的项目。
- 转到“属性”
- 在“文本文件编码”中选择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