Mostrar caracteres especiales usando System.out.println

Tengo problemas para enviar o mostrar texto con caracteres especiales de mi servicio web a mi base de datos. En mi eclipse configuré la encoding de caracteres para UTF-8, pero todavía no me permite mostrar los caracteres. Por ejemplo, una impresión simple como el código a continuación

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

O

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

El resultado en la consola y si envío esto a mi base de datos es ??????. ¿Cómo puedo ver esto para que se muestre correctamente en la consola y con suerte en la base de datos?

Sí, es el XXI. siglo y todavía estamos luchando con cosas como encoding de caracteres …

Mi primera suposición es que o bien:

  1. la encoding de su archivo de origen puede ser incorrecta (¿utiliza herramientas de comstackción como Maven? Puede ser necesario configurar también la encoding de origen),
  2. su consola de encoding podría estar equivocada (¿está bajo Windows?) La consola de línea de comandos predeterminada no es UTF por defecto, depende de cada localidad, pero con una pequeña jugada en el registro puede establecer su encoding.
  3. su encoding de base de datos puede ser incorrecta (¿qué es la encoding de tabla, puede verificar eso?)

Si está utilizando Eclipse, entonces

  1. haga clic derecho en su proyecto.
  2. Ir a Propiedades
  3. Seleccione UTF-8 en “Codificación de archivo de texto”

enter image description here

Mira si esto funciona

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

Para almacenar en DB, use following para codificar explícitamente la cadena en UTF-8

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

puede ser que necesite decodificar su cadena de caracteres primero en ISO-8859 y luego codificarla en UTF-8