MySQL Insert - Ελληνικό Κείμενο

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
web_developer
Δημοσιεύσεις: 5
Εγγραφή: 09 Ιουν 2009 23:42

MySQL Insert - Ελληνικό Κείμενο

Δημοσίευση από web_developer » 24 Σεπ 2009 21:56

Γεια σας,

Έχω δημιουργήσει έναν πίνακα με τα εξής πεδία:

CREATE TABLE `person` (
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(10) character set utf8 NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Όταν γίνετε το insert καταχωρεί μόνο τους μισούς χαραχτήρες στο πεδίο name. Οι ελληνικοί χαραχτήρες πιάνουν 2 bytes αλλά έχω δηλώσει character set utf8 στο πεδίο. Μπορείτε να μου προτείνετε κάποια λύση ώστε να μπορεί να καταχωρεί και τους 10 χαραχτήρες και όχι μόνο τους 5;

Ευχαριστώ πάρα πολύ.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

MySQL Insert - Ελληνικό Κείμενο

Δημοσίευση από korgr » 24 Σεπ 2009 22:06

Γιατι δεν το κανεις varchar(20) ?

web_developer
Δημοσιεύσεις: 5
Εγγραφή: 09 Ιουν 2009 23:42

MySQL Insert - Ελληνικό Κείμενο

Δημοσίευση από web_developer » 24 Σεπ 2009 23:34

Αυτός ο τρόπος μπορεί να γίνει, απλά αναζητώ μια λύση που να μην εξαρτάται από τους χαραχτήρες της κάθε γλώσσας π.χ. λατινικά (1 byte), ελληνικά (2 bytes) ή κινέζικα (3 bytes).

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

MySQL Insert - Ελληνικό Κείμενο

Δημοσίευση από nbc » 24 Σεπ 2009 23:55

Τι έκδοση είναι ο server σου? Αν δεν με γελάει η μνήμη μου, απαιτείται 5.0.3 ή νεότερη.

Προσωπικά, έχω τσεκάρει την 5.0.67, και λειτουργεί.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

MySQL Insert - Ελληνικό Κείμενο

Δημοσίευση από dva_dev » 25 Σεπ 2009 00:34

Αυτός ο τρόπος μπορεί να γίνει, απλά αναζητώ μια λύση που να μην εξαρτάται από τους χαραχτήρες της κάθε γλώσσας π.χ. λατινικά (1 byte), ελληνικά (2 bytes) ή κινέζικα (3 bytes).
Αν θέλεις κάτι γενικό που να δουλεύει παντού έχεις δύο επιλογές.
α) Κάνεις το μέγεθος του πεδίου = μέγιστο αριθμό χαρακτήρων που θέλεις να κρατήσεις Χ μέγιστο πλήθος bytes ανά χαρακτήρα (τουλάχιστον για τις γλώσσες που θέλεις να υποστηρίζεις).

β) Χρησιμοποιείς fixed width κωδικοποίηση (UTF32/UCS-4) και καθάρισες.

Το 5 ή το 10 χαρακτήρες μου φαίνεται μικρό για πεδίο που αφορά όνομα. Ακόμα και 1 byte κωδικοποίηση να χρησιμοποιήσεις το "Τριαντάφυλλος" δε χωράει. Δώσε λίγο χώρο να ανασάνει.

web_developer
Δημοσιεύσεις: 5
Εγγραφή: 09 Ιουν 2009 23:42

MySQL Insert - Ελληνικό Κείμενο

Δημοσίευση από web_developer » 25 Σεπ 2009 00:34

Έχω την έκδοση 5.1.37

web_developer
Δημοσιεύσεις: 5
Εγγραφή: 09 Ιουν 2009 23:42

MySQL Insert - Ελληνικό Κείμενο

Δημοσίευση από web_developer » 25 Σεπ 2009 01:43

@dva_dev θα κρατήσω το (α) λόγω του ότι το (β) είναι fixed 4 bytes για κάθε χαρακτήρα και καταναλώνει πολύ χώρο. Το 10 χαρακτήρες στο name ήταν για να κάνω τεστ. :D

Ευχαριστώ όλους για την βοήθεια.

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες