2013-10-28 11 views
6

Greckie znaki w bazie danych są jak znaki zapytania ("?????"). Nie mogę znaleźć rozwiązania. Opracowałem aplikację używając Java/Swing, ale kiedy wstawię greckie litery w MySQL są jak znaki zapytania. Zmieniłem również sortowanie db na utf8 i kolumny. Moje kodowanie projektu jest ustawione na UTF-8. Kiedy wstawiam greckie litery z MySQL, zostaną one poprawnie zapisane.Znaki Unicode (greckie) są przechowywane w bazie danych, np. "??????"

Używam pliku jar pliku MySQL.

public class Testing { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 

    try { 
     Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/chartest","root","1234"); 
     Statement pst=conn.createStatement(); 
     String var1="ασδασδ"; 
     String sql="INSERT INTO chars(value) values('"+var1+"')"; 
     pst.execute(sql); 
    } catch (SQLException ex) { 
     Logger.getLogger(Testing.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

}

+0

Proszę podać, w jaki sposób połączyć się z serwerem mysql (prawdopodobnie trzeba ustawić kodowanie klienta prawidłowo) – mabi

+0

Czy skonfigurować szyfrowanie klienta dla bieżącego połączenia? – Nicolai

+1

spróbuj tego http://stackoverflow.com/a/6398128/1597671 –

Odpowiedz

4

Chyba wystarczy dodać kilka więcej parametrów (useUnicode i characterEncoding) podczas tworzenia połączenia. Poniższy kod działa dla mnie:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.PreparedStatement; 

public class GreekTestMain { 

    public static void main(String[] args) { 
     String connUrl = 
       "jdbc:mysql://192.168.1.3/greektest?" + 
       "useUnicode=yes&characterEncoding=UTF-8" + 
       "&user=root&password=obfuscated"; 
     try (Connection conn = DriverManager.getConnection(connUrl)) { 
      String sql = "INSERT INTO `chars` (`value`) VALUES (?)"; 
      PreparedStatement pst = conn.prepareStatement(sql); 
      pst.setString(1, "ασδασδ"); 
      pst.executeUpdate(); 
     } catch (Exception e) { 
      e.printStackTrace(System.err); 
     } 
    } 

} 
+0

DZIĘKUJEMY TAK DUŻO MATE.Aktualnie jestem początkującym programistą i staram się zbudować aplikację garażową w języku Java do przechowywania moich klientów i nie byłem w stanie do przechowywania ich w języku greckim, tylko w języku angielskim z powodu bieżącego wydania. Nie mogę głosować, ponieważ potrzebuję reputacji 15+. Dziękuję jeszcze raz :) – user2109456

+0

Nie działa dla mnie :( –

+0

Ta odpowiedź pomaga mi rozwiązać problem utrzymywania się Greckie znaki w bazie danych Mogę potwierdzić, że może to być dobre rozwiązanie. – Tung

Powiązane problemy