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

21

我在将特殊字符的文本从我的Web服务发送或显示到数据库时遇到了问题。在我的Eclipse中,我已将字符编码设置为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();

在控制台上显示的结果和发送到数据库中的结果是??????。我该如何使其在控制台上正确显示,以及希望在数据库中也能正确显示?


这是Eclipse控制台还是sh/cmd?你的控制台使用哪种字符集? - atk
1
Eclipse,如果您所说的控制台字符集是指Windows > Preferences > WorkSpace中的设置,则已设置为UTF-8。是否有其他方法可以单独设置控制台? - Amanni
4个回答

13

如果您正在使用Eclipse,则

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

输入图像描述


10

看看这个是否有效。

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

为了存储在数据库中,请使用以下方法来明确地将字符串编码为UTF-8

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

1
不,我得到了相同的字符。 - Amanni
你必须将字符串编码为"iso-8859-1",例如:new String(test.getBytes(), "iso-8859-1"); - oczdref

3

是的,现在已经是21世纪了,但我们仍然在努力解决字符编码等问题...

我第一次猜测要么:

  1. 您的源文件编码可能是错误的(您是否使用构建工具如Maven?可能需要在其中设置源编码),
  2. 您的控制台编码可能是错误的(您是否在Windows下运行?默认命令行控制台不是UTF,默认情况下是本地依赖的,但是通过对注册表进行少量调整,您可以设置其编码),
  3. 您的数据库编码可能是不正确的(表格编码是什么?您能检查一下吗?)

我已将表格编码设置为utf8,但结果仍然相同。就编码而言,当我在Android中编程时,我可以显示特殊字符。 - Amanni

0

也许你需要先将字符字符串解码为 ISO-8859,然后再编码为 UTF-8


1
请将以下与编程有关的内容从英语翻译成中文。只返回翻译后的文本:如果有可能,请将其作为评论添加,而不是答案。 - bharatpatel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接