Προς το περιεχόμενο

Πρόβλημα Ελληνικών java σε mysql


erimitis

Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω πρόβλημα, έχω φτιάξει ένα αρχείο σε java που συνδέεται σε mysql αλλά όταν γράφω ελληνικά εισάγει στήν mysql ???????????

Διαβάζει όμως Ελληνικά αν έχω γράψει σε mysql

Εχει κάποιος αντιμετοπίσει αυτήν την ασυμβατότητα

Ευχαριστώ

Δημοσ.

το ίδιο πράγμα μου κάνει και μένα...

γράφω ένα πρόγραμμα τώρα (JavaSE), πότε σε mac os x πότε σε windows, και στα mac os x, με το ίδιο source code, μ βγάζει το πρόβλημα που αναφέρεις...στα windows, κανένα πρόβλημα...(η mysql βάση είναι ΟΚ από άποψη ελληνικών χαρακτήρων)...λύση ωστόσο δεν έχω...

 

edit: εμένα δεν με ενδιαφέρει κ τόσο πολύ να το λύσω, αλλά κοίτα κ αυτό μια...

Δημοσ.

η εγκατάσταση 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());
   } 
     
 }


Δημοσ.

@virxen75

Aναφέρεται σε mac os x περιβάλλον(πολύ πιθανό) + εννοεί όταν εισάγεις ελληνικά σε ένα JTextField (π.χ.) το οποίο δέχεται κανονικά ελληνικά, όταν αποθηκεύεται στη βάση τότε πάει και γράφει "?????"...επίσης, εννοεί ότι τις ήδη υπάρχουσες εγγραφές(που δεν έχουν προστεθεί μέσω του GUI), το GUI τις εμφανίζει σωστά...δηλαδή, όταν φορτώνεται η πληροφορία στο JTextField, τότε εμφανίζεται σωστά(ελληνικά) και όχι "?????"...

 

@erimitis,

διόρθωσέ με αν δεν είναι σωστή η περιγραφή του προβλήματος...

Δημοσ.
@virxen75

Aναφέρεται σε 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!!!)

Δημοσ.

εγώ σου μιλάω για mac os x, με το ίδιο source code σε windows δεν έχω πρόβλημα...και κάνω ένα guess ότι και ο erimitis μπορεί να αναφέρεται σε mac os x...μπορεί να κάνω λάθος όμως...ας το ξεκαθαρίσει λοιπόν...Αν δεν ειναι σε mac, τότε αυτό που λες ειναι και η λύση του. Αν από την άλλη ειναι όντως σε mac, τότε το πρόβλημα ειναι αλλού..(γιατί έχω charset "UTF-8" με collation "utf-8_general_ci...")...

post-31231-129063036152_thumb.jpg

Δημοσ.

ΣΑΣ ΕΥΧΑΡΙΣΤΩ ΓΙΑ ΤΟ ΕΝΔΙΑΦΕΡΟΝ

ΣΥΝΕΧΙΖΕΤΑΙ ΤΟ ΠΡΟΒΛΗΜΑ, ΔΗΜΙΟΥΡΓΗΣΑ ΞΑΝΑ ΤΙΣ ΒΑΣΕΙΣ ΟΠΩΣ ΠΑΡΑΠΑΝΩ ΟΜΩΣ ΤΑ ΙΔΙΑ.

ΜΗΠΩΣ ΜΠΟΡΕΙΣ ΝΑ ΜΟΥ ΠΕΙΣ ΠΟΙΟ ΔΙΕΥΚΡΙΝΙΣΤΙΚΑ ΤΙ ΡΥΘΜΙΣΗ ΜΠΟΡΩ ΝΑ ΚΑΝΩ

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,B) 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>

Δημοσ.

ΣΕ ΕΥΧΑΡΙΣΤΩ 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>

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...