2012-06-07 17 views
11

Ho problemi a inviare o visualizzare testo con caratteri speciali dal mio webservice al mio database. Sulla mia eclissi ho impostato la codifica dei caratteri su UTF-8 ma non mi permette ancora di visualizzare i caratteri. Per esempio una stampa semplice come il codice qui sottoVisualizza caratteri speciali utilizzando 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(); 

Il risultato sulla console e se inviare questo al mio database è ??????. Come faccio a ottenere questo per visualizzare correttamente sulla console e si spera nel database

+0

È questo il console eclissi, o sh/cmd? a quale set di caratteri è impostata la tua console? – atk

+1

eclissi, se per set di caratteri della console intendi le impostazioni in Windows> Preferenze> Spazio di lavoro è impostato su UTF-8. C'è un altro modo per impostare la console separatamente? – Amanni

risposta

1

Sì, la sua XXI. secolo e siamo ancora alle prese con cose come la codifica dei caratteri ...

La mia prima risposta è che:?

  1. la codifica file sorgente potrebbe essere sbagliato (si usa costruire strumenti come Maven Potrebbe anche per impostare la codifica della sorgente),
  2. la codifica della console potrebbe essere errata (si è in Windows? La console della riga di comando predefinita non è UTF per impostazione predefinita, è dipendente dalla locale, ma con una piccola riproduzione nel registro è possibile impostare la sua codifica)
  3. la codifica del DB potrebbe essere errata (qual è la codifica della tabella, puoi controllare che ?)
+0

Ho impostato la codifica della tabella su utf8 ancora lo stesso risultato. Per quanto riguarda la codifica, posso visualizzare caratteri speciali su quando programma in Android. – Amanni

9

Vedere se questo funziona.

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

Per la memorizzazione nel DB, uso a seguito di codificare in modo esplicito la stringa in UTF-8

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

No, ottengo gli stessi caratteri – Amanni

+0

è necessario codificare la stringa in "iso-8859-1" ex: new String (test.getBytes(), "iso-8859-1"); – oczdref

0

può essere necessario per decodificare la stringa di caratteri al primo ISO-8859 e lo codifica UTF-8

11

Se si utilizza Eclipse, quindi

  1. tasto destro del mouse su tu progetti.
  2. andare alle proprietà
  3. Selezionare UTF-8 nel "Testo Codifica file"

enter image description here

+0

WOW, sta funzionando per me. – Sun