2013-10-28 28 views
6

Veritabanı içindeki Yunanca karakterler soru işaretleri gibidir ("?????"). Bir çözüm bulamıyorum. Java/Swing kullanarak bir uygulama geliştirdim, fakat MySQL'e Yunan harfleri eklediğimde soru işaretleri gibi. Db harmanlamasını utf8 ve sütunlara da değiştirdim. Proje kodlamam UTF-8 olarak ayarlandı. MySQL'den Yunan harfleri eklediğimde, düzgün bir şekilde saklanırlar.Unicode (Yunanca) karakterler veritabanında "??????" gibi saklanır

MySQL bağlayıcı jar dosyası kullanıyorum.

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

belirtin – mabi

+0

geçerli bağlantı için istemci kodlamasını kurmak mı (muhtemelen düzgün istemci kodlamasını ayarlamak gerekir)? – Nicolai

+1

bu http://stackoverflow.com/a/6398128/1597671 deneyin –

cevap

4

Ben sadece bağlantıyı oluştururken daha parametrelerin bir çift (useUnicode ve characterEncoding) eklemeniz gerekir düşünüyorum. Aşağıdaki kod benim için çalışıyor: Eğer MySQL sunucusuna bağlanmak nasıl

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

TEŞEKKÜR EDERİM MESAJI.Yalnızca programlamaya yeni başlayan biriyim ve müşterilerimi saklamak için java'da bir garaj uygulaması oluşturmaya çalışıyorum ve mümkün değildi onları mevcut sorun nedeniyle, sadece İngilizce olarak saklamak için.O 15 + itibarına ihtiyacım var çünkü oy veremiyorum.Teşekkür ederim tekrar :) – user2109456

+0

Benim için çalışmıyor :( –

+0

Bu cevap devam etmeme problemini çözmeme yardımcı oluyor Yunanca karakterler veritabanına girer.Bunun iyi bir çözüm olabileceğini söyleyebilirim. – Tung

İlgili konular