2012-06-07 18 views
11

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

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ía esto a mi base de datos es ??????. ¿Cómo puedo obtener esto para mostrar correctamente en la consola y con suerte en la base de datos

+0

¿Es esta la consola eclipse, o sh/cmd? ¿A qué conjunto de caracteres está configurada tu consola? – atk

+1

eclipse, si por conjunto de caracteres de consola quiere decir que la configuración en Windows> Preferencias> WorkSpace está configurada en UTF-8. ¿Hay alguna otra forma de configurar la consola por separado? – Amanni

Respuesta

1

Sí, su el XXI. siglo, y todavía estamos luchando con cosas como la codificación de caracteres ...

Mi primera suposición es que, o bien:?

  1. su fuente de codificación de archivos podría estar equivocado (¿utiliza construir herramientas como Maven Se podría también es necesario configurar la codificación de origen),
  2. la codificación de la consola podría estar equivocada (¿está usted bajo Windows? La consola de la línea de comandos predeterminada no es UTF por defecto, depende de la localidad, pero tiene una pequeña registro puede establecer su codificación)
  3. su codificación de base de datos puede ser incorrecta (¿qué es la codificación de tabla, puede comprobar que ?)
+0

He establecido que la codificación de la tabla para utf8 sigue siendo el mismo resultado. En cuanto a la codificación, puedo mostrar caracteres especiales cuando programo en Android. – Amanni

9

Ver si esto funciona.

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

Para almacenar en DB, el uso siguiente para codificar explícitamente la cadena en UTF-8

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

No, obtengo los mismos caracteres – Amanni

+0

debe codificar la cadena como "iso-8859-1" ex: new String (test.getBytes(), "iso-8859-1"); – oczdref

0

puede ser lo que necesita para decodificar la cadena de caracteres con la norma ISO-8859 primero y luego codificar a UTF-8

11

Si está utilizando Eclipse, entonces

  1. haga clic derecho en tu proyecto
  2. ir a las características
  3. seleccione UTF-8 en "Texto Codificación de archivos"

enter image description here

+0

WOW, está funcionando para mí. – Sun