erimitis Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 Εχω πρόβλημα, έχω φτιάξει ένα αρχείο σε java που συνδέεται σε mysql αλλά όταν γράφω ελληνικά εισάγει στήν mysql ??????????? Διαβάζει όμως Ελληνικά αν έχω γράψει σε mysql Εχει κάποιος αντιμετοπίσει αυτήν την ασυμβατότητα Ευχαριστώ
Επισκέπτης Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 το ίδιο πράγμα μου κάνει και μένα... γράφω ένα πρόγραμμα τώρα (JavaSE), πότε σε mac os x πότε σε windows, και στα mac os x, με το ίδιο source code, μ βγάζει το πρόβλημα που αναφέρεις...στα windows, κανένα πρόβλημα...(η mysql βάση είναι ΟΚ από άποψη ελληνικών χαρακτήρων)...λύση ωστόσο δεν έχω... edit: εμένα δεν με ενδιαφέρει κ τόσο πολύ να το λύσω, αλλά κοίτα κ αυτό μια...
virxen75 Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 η εγκατάσταση MySQL έχει γίνει σωστά? start>all programs>MySQL>MySQL Server 5.0>MySQL Server Instance Config Wizard next>επιλέγω server5 αν έχω και άλλη εκδοση mysql next>reconfigure instance>detailed configuration >next>developer machine>multifunctional database>next>decision support ή ότι άλλο θες>next> τσεκάρεις και τα 2 enable...>next>manual selected default character set επιλέγω utf8 next>next>ξετσεκάρω το modify security settings>next>execute και είσαι έτοιμος ξαναφτιάξε την βάση σου από την αρχή ==================================== > create database my_db [color="Red"]DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci[/color]; use my_db; create table test(id integer NOT NULL AUTO_INCREMENT, a [color="Red"]VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci[/color], β VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci, primary key(id))[color="Red"]DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_unicode_ci CHARSET=utf8 COLLATE=utf8_unicode_ci;[/color] σύνδεση από java(φτιάχνει και έναν πίνακα στην βάση με ελληνικά να το τεστάρεις) ======================================================================= > public void connectToDatabase(String databaseName,String user,String passwd){ try {//συνδεση με την βαση της MySql Class.forName("com.mysql.jdbc.Driver").newInstance(); dbconnection = DriverManager.getConnection("jdbc:mysql://localhost/"+databaseName+"?user="+user+"&password="+passwd+"[color="Red"]&useUnicode=true&mysqlEncoding=utf8&characterEncoding=utf8[/color]"); //ονομα βασης δεδομενων ,username,passwd stmt1=dbconnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); [color="Red"]stmt1.executeQuery("SET NAMES 'utf8'");[/color] if(!dbconnection.isClosed()) System.out.println("Successfully connected to MySQL server..."); try{ stmt1.executeUpdate("drop table objects"); }catch(Exception e) { System.err.println("Exception: " + e.getMessage()); } stmt1.executeUpdate("CREATE TABLE objects (`object_id` INTEGER NOT NULL,`object_number` INTEGER ,`object_name` VARCHAR(45) CHARACTER SET utf8 COLLATE utf8_general_ci ,`facilities` VARCHAR(45) CHARACTER SET utf8 COLLATE utf8_general_ci ,PRIMARY KEY (`object_id`))ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci"); stmt1.executeUpdate("insert into objects values('1','0','ΒΙΒΛΙΟΘΗΚΗ','ΒΙΒΛΙΑ')"); stmt1.executeUpdate("insert into objects values('2','1','ΓΡΑΦΕΙΟ',null)"); stmt1.executeUpdate("insert into objects values('3','2','ΚΑΡΕΚΛΑ',null)"); stmt1.executeUpdate("insert into objects values('4','3','ΓΡΑΦΕΙΟ ΜΕ PC','ΕΡΩΤΗΣΕΙΣ')"); stmt1.executeUpdate("insert into objects values('5','4','AUDIO PLAYER','ΗΧΟΣ')"); stmt1.executeUpdate("insert into objects values('6','5','VIDEO PLAYER','ΒΙΝΤΕΟ')"); } catch(Exception e) { System.err.println("Exception: " + e.getMessage()); } }
Επισκέπτης Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 @virxen75 Aναφέρεται σε mac os x περιβάλλον(πολύ πιθανό) + εννοεί όταν εισάγεις ελληνικά σε ένα JTextField (π.χ.) το οποίο δέχεται κανονικά ελληνικά, όταν αποθηκεύεται στη βάση τότε πάει και γράφει "?????"...επίσης, εννοεί ότι τις ήδη υπάρχουσες εγγραφές(που δεν έχουν προστεθεί μέσω του GUI), το GUI τις εμφανίζει σωστά...δηλαδή, όταν φορτώνεται η πληροφορία στο JTextField, τότε εμφανίζεται σωστά(ελληνικά) και όχι "?????"... @erimitis, διόρθωσέ με αν δεν είναι σωστή η περιγραφή του προβλήματος...
virxen75 Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 @virxen75Aναφέρεται σε mac os x περιβάλλον(πολύ πιθανό) + εννοεί όταν εισάγεις ελληνικά σε ένα JTextField (π.χ.) το οποίο δέχεται κανονικά ελληνικά, όταν αποθηκεύεται στη βάση τότε πάει και γράφει "?????"...επίσης, εννοεί ότι τις ήδη υπάρχουσες εγγραφές(που δεν έχουν προστεθεί μέσω του GUI), το GUI τις εμφανίζει σωστά...δηλαδή, όταν φορτώνεται η πληροφορία στο JTextField, τότε εμφανίζεται σωστά(ελληνικά) και όχι "?????"... @erimitis, διόρθωσέ με αν δεν είναι σωστή η περιγραφή του προβλήματος... αν δεν κάνω λάθος νομίζω ότι η java χρησιμοποιεί utf8 enconding αν η mysql δεν έχει σεταριστεί σωστά δηλαδή να έχεις επιλέξει σαν default character set το utf8 (και όχι latin ή greek) όπως αναφέρω παραπάνω τότε αποθηκεύει στην βάση τα ???????? αν πάλι βάλει αγγλικά στο jtextfield και τα στείλει στην βάση θα αποθηκευτούν σωστά και όχι ?????. όταν φορτώνεται η πληροφορία στο JTextField, τότε εμφανίζεται σωστά(ελληνικά) και όχι "?????"... γιατί είναι αποθηκευμένα σε utf8 η java τα καταλαβαίνει η mysql προφανώς σε latin encode δεν μπορεί να τα διαβάσει γι αυτό τα ???? αν δεν τα καταφέρεις στείλε τον κώδικα και την βάση να το κοιτάξω (προϋπόθεση να μην μιλάμε για Mac!!!)
Επισκέπτης Δημοσ. 14 Νοεμβρίου 2009 Δημοσ. 14 Νοεμβρίου 2009 εγώ σου μιλάω για mac os x, με το ίδιο source code σε windows δεν έχω πρόβλημα...και κάνω ένα guess ότι και ο erimitis μπορεί να αναφέρεται σε mac os x...μπορεί να κάνω λάθος όμως...ας το ξεκαθαρίσει λοιπόν...Αν δεν ειναι σε mac, τότε αυτό που λες ειναι και η λύση του. Αν από την άλλη ειναι όντως σε mac, τότε το πρόβλημα ειναι αλλού..(γιατί έχω charset "UTF-8" με collation "utf-8_general_ci...")...
erimitis Δημοσ. 16 Νοεμβρίου 2009 Μέλος Δημοσ. 16 Νοεμβρίου 2009 ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΓΙΑ ΤΟ ΕΝΔΙΑΦΕΡΟΝ ΣΥΝΕΧΙΖΕΤΑΙ ΤΟ ΠΡΟΒΛΗΜΑ, ΔΗΜΙΟΥΡΓΗΣΑ ΞΑΝΑ ΤΙΣ ΒΑΣΕΙΣ ΟΠΩΣ ΠΑΡΑΠΑΝΩ ΟΜΩΣ ΤΑ ΙΔΙΑ. ΜΗΠΩΣ ΜΠΟΡΕΙΣ ΝΑ ΜΟΥ ΠΕΙΣ ΠΟΙΟ ΔΙΕΥΚΡΙΝΙΣΤΙΚΑ ΤΙ ΡΥΘΜΙΣΗ ΜΠΟΡΩ ΝΑ ΚΑΝΩ try { Class.forName ("com.mysql.jdbc.Driver").newInstance ( ); conn = DriverManager.getConnection (url, userName, password); System.out.println ("Connected"); Statement s = conn.createStatement ( ); String a1="πρώτος"; String b1="in gr"; Statement in = conn.createStatement (); in.executeUpdate("INSERT INTO my_db.test( a, VALUES( '"+a1+"','"+b1+"')"); ///////// Statement stmt1 = conn.createStatement (); stmt1.executeUpdate("insert into my_db.objects values('1','0','ΒΙΒΛΙΟΘΗΚΗ','ΒΙΒΛΙΑ')"); stmt1.executeUpdate("insert into my_db.objects values('2','1','ΓΡΑΦΕΙΟ',null)"); stmt1.executeUpdate("insert into my_db.objects values('3','2','ΚΑΡΕΚΛΑ',null)"); stmt1.executeUpdate("insert into my_db.objects values('4','3','ΓΡΑΦΕΙΟ ΜΕ PC','ΕΡΩΤΗΣΕΙΣ')"); stmt1.executeUpdate("insert into my_db.objects values('5','4','AUDIO PLAYER','ΗΧΟΣ')"); stmt1.executeUpdate("insert into my_db.objects values('6','5','VIDEO PLAYER','ΒΙΝΤΕΟ')"); rs.close ( ); // close result set s.close ( ); // close statement System.out.println ("......................................"); } ---------- Το μήνυμα προστέθηκε στις 01:21 ---------- ΕΝΤΟΠΙΣΑ ΟΤΙ ΣΤΗΝ ΜΕΤΑΦΟΡΑ ΑΠΟ ΤΗΝ ΜΙΑ ΦΟΡΜΑ ΣΤΗΝ ΑΛΛΗ ΚΑΙ ΠΡΙΝ ΤΑ ΣΤΕΙΛΕΙ ΣΤΗΝ Mysql ΓΡΑΦΕΙ ΤΑ ΠΕΡΙΕΡΓΑ ΙΣΩΣ ΝΑ ΦΤΑΙΕΙ ΑΥΤΟ //////////// <HTML> <HEAD> <TITLE>Database Lookup</TITLE> </HEAD> <BODY> <H1>Database Lookup</H1> <FORM ACTION="basic.jsp" METHOD="POST"> <H2>ΣΥΜΠΛΗΡΩΣΤΕ ΤΑ ΣΤΟΙΧΕΙΑ:<H2> <H2>ΟΝΟΜΑ:<H2> <INPUT TYPE="TEXT" NAME="a"> <H2>ΕΠΩΝΥΜΟ:<H2><INPUT TYPE="TEXT" NAME="b"> <BR> <INPUT TYPE="SUBMIT" value="Submit"> </FORM> </BODY> <HTML>
erimitis Δημοσ. 16 Νοεμβρίου 2009 Μέλος Δημοσ. 16 Νοεμβρίου 2009 ΣΕ ΕΥΧΑΡΙΣΤΩ virxen75 Η ΚΩΔΙΚΟΠΟΙΗΣΗ ΕΙΝΑΙ UTF8 ΤΟ ΕΛΥΣΑ ΤΟ ΠΡΟΒΛΗΜΑ ΣΤΗΝ ΜΕΤΑΦΕΡΣΙΜΟΤΗΤΑ ΒΑΖΟΝΤΑΣ <meta http-equiv="content-type" content="text/html; charset="iso-8859-1" /> ΟΜΩΣ ΤΟ ΑΡΧΕΙΟ HTML ΔΕΝ ΔΕΧΕΤΑΙ ΤΑ ΕΛΛΗΝΙΚΑ ΑΝ ΜΠΟΡΕΙΣ ΤΡΕΞΤΟ /////////// <HTML> <meta http-equiv="content-type" content="text/html; charset="iso-8859-1" /> <HEAD> <TITLE>Database Lookup</TITLE> </HEAD> <BODY BGCOLOR="ffffcc"> <H1>Database Lookup</H1> <FORM ACTION="basic.jsp" METHOD="POST"> <H2>ΣΥΜΠΛΗΡΩΣΤΕ ΤΑ ΣΤΟΙΧΕΙΑ:<H2> <H2>ΟΝΟΜΑ:<H2> <INPUT TYPE="TEXT" NAME="a"> <H2>ΕΠΩΝΥΜΟ:<H2><INPUT TYPE="TEXT" NAME="b"> <BR> <INPUT TYPE="SUBMIT" value="Submit"> </FORM> </BODY> <HTML>
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.