Ελληνικά στις εφαρμογές - κινέζικα στην βάση

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

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

Απάντηση
MerNion
Δημοσιεύσεις: 10
Εγγραφή: 05 Απρ 2008 17:34

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από MerNion » 05 Απρ 2008 17:47

Καλησπέρα,

αντιμετωπίζω το εξής "πρόβλημα". Εχω μια βάση mysql (λέει MySQL - 5.0.27 και MySQL client version: 4.1.20. Τελικά τι είναι; 5 η 4;) και ένα php αρχείο που εισάγει/διαβάσει κλπ τα δεδομένα από την βάση. Ενώ μεσω του browser τα δεδομένα που "τραβάει" από την βάση φαίνονται κανονικά στα ελληνικά, όταν πηγαίνω απο το phpmyadmin (2.8.2.4) να δω τα δεδομένα μου φαίνονται κινέζικα. Αυτό δεν μου δημιουργεί άμεσα κάποιο πρόβλημα αφού χειρίζομαι απο το php script τα δεδομένα αλλά αν θελήσω να κάνω ένα backup, τα "βγάζει" κινέζικα με αποτέλεσμα να μου είναι άχρηστο το backup.

Το πρόβλημα όπως καταλαβαίνω δεν είναι απλά στην εμφάνιση των χαρακτήρων από το phpmyadmin λογω encoding της σελίδας αλλά έχουν περαστεί με λάθος encoding στην βάση. (σωστά;)
Πως θα μπορέσω να τα διορθώσω και να "βγαίνουν" σωστά ελληνικά σε ένα backup;

Το Collation της βάσης ειναι απο default latin1_swedish_ci.
Δοκίμασα να κάνω export τα δεδομένα (μέσω phpmyadmin) και να φτιάξω μια άλλη βάση με greek_general_ci και να τα βάλω εκεί αλλά πάλι κινέζικα τα δείχνει.

Ευχαριστώ!

eiritapa
Δημοσιεύσεις: 16
Εγγραφή: 29 Οκτ 2007 02:32
Τοποθεσία: ΘΕΣ/ΝΙΚΗ

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από eiritapa » 01 Μάιος 2008 03:55

Γεια σου,

το encoding της σελίδας πρέπει να είναι ίδιο με το encoding της βάσης.
π.χ αν το encoding της σελίδας σου είναι utf-8 πρέπει το collasion στην βάση σου να είναι utf_8_unicode ή utf_8_general

MerNion
Δημοσιεύσεις: 10
Εγγραφή: 05 Απρ 2008 17:34

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από MerNion » 01 Μάιος 2008 15:16

Το θέμα είναι οτι τώρα πλέον και να αλλάξω το collation της βάσης, τα δεδομένα όταν γίνονται export είναι σε κινέζικα.. Αυτό είναι το πρόβλημά μου.. Πως θα γίνει να τα κάνω export σε κανονικά ελληνικά!

Άβαταρ μέλους
cdhyper
Literature Moderator
Δημοσιεύσεις: 9707
Εγγραφή: 23 Ιουν 2001 03:00
Τοποθεσία: Φωτονερόπετρα
Επικοινωνία:

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από cdhyper » 01 Μάιος 2008 16:00

Αυτό είναι ένα πρόβλημα στο οποίο δεν έχω βρει ούτε εγώ λύση για κάτι παλιές βάσεις που έχω. Σίγουρα θα υπάρχει τρόπος αφού στο site φαίνονται κανονικά ελληνικά, επομένως με κάποιο τρόπο "μεταφράζονται" αυτά τα κινέζικα. Αλλά δεν έχω βρει τίποτα μέχρι σήμερα.

Γενικά πρέπει από την αρχή να στήνεις τη βάση σου σε greek_general_ci. Το ότι είναι στημένη σε latin_swedish_ci είναι λάθος εξαρχής, γι αυτό και σου βγάζει τα κινέζικα στο phpmyadmin.

Η mysql το έχει χοντρογαμήσει το θέμα και έχουν πηδηχτεί πολλές ελληνικές βάσεις.
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

MerNion
Δημοσιεύσεις: 10
Εγγραφή: 05 Απρ 2008 17:34

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από MerNion » 01 Μάιος 2008 20:59

Το είχα προσπαθήσει αρκετά το θέμα, γι αυτό και έγραψα εδώ τελικά.. Μπας και κάποιος με αντίστοιχο πρόβλημα είχε βρει λύση..
Αυτό που σκέφτομαι να κάνω αφού στον browser φαίνονται κανονικά, είναι να φτιάξω ένα php script που να διαβάζει όλα τα πεδία του κάθε πίνακα της βάσης, να τα κάνει dump κάπως στην οθόνη και μετά να τα σώζω εγώ κάπως μέσω του browser και μετά import σε νέα βάση με σωστό collation από την αρχή...

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από cherouvim » 01 Μάιος 2008 23:51

cdhyper έγραψε:Η mysql το έχει χοντρογαμήσει το θέμα και έχουν πηδηχτεί πολλές ελληνικές βάσεις.
Η MySQL είναι ΟΚ. Το πρόβλημα είναι καθαρά θέμα προγραμματιστή που δεν ξέρει τι κάνει.

Υπάρχουν data migration διαδικασίες και για MySQL βάσεις πριν την έκδοση 4.1.2, όπου δεν υπήρχε κανονική υποστήριξη για utf-8.

http://dev.mysql.com/doc/refman/4.1/en/ ... m-4-0.html
http://dev.mysql.com/doc/refman/4.1/en/ ... rsion.html
http://dev.mysql.com/doc/refman/5.0/en/ ... ction.html
MerNion έγραψε:Εχω μια βάση mysql (λέει MySQL - 5.0.27 και MySQL client version: 4.1.20. Τελικά τι είναι; 5 η 4;)

Κώδικας: Επιλογή όλων

C:\>mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 8.41 Distrib 5.0.51a, for Win32 on ia32
Copyright (C) 2000-2006 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.0.51a-community-nt
Protocol version        10
Connection              localhost via TCP/IP
TCP port                3306
Uptime:                 45 min 57 sec
Αν δεν έχεις πρόσβαση στο mysqladmin γράψε show variables; και ψάξε για το:

Κώδικας: Επιλογή όλων

version                         5.0.51a-community-nt
MerNion έγραψε:Δοκίμασα να... αλλά πάλι κινέζικα τα δείχνει.
Πάρε ένα dump της βάσης με το mysqldump:

Κώδικας: Επιλογή όλων

mysqldump -u root -p test > dump.sql
Και κάντο post εδώ να πάρουμε μία ιδέα (σβήσε τα ευαίσθητα δεδομένα πρώτα).

Άνοιξε το με notepad++ που σέβεται τα encodings. Σώστο σε utf-8 και πείραξε του αναλόγως όλα τα:

Κώδικας: Επιλογή όλων

/*!40101 SET NAMES utf8 */;
...
SET character_set_client = utf8;
...
Μετά κάνε import σε βάση που την έχεις δημιουργήσει έτσι:

Κώδικας: Επιλογή όλων

create database `foo` default character set utf8;

MerNion
Δημοσιεύσεις: 10
Εγγραφή: 05 Απρ 2008 17:34

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από MerNion » 02 Μάιος 2008 14:33

1)

Κώδικας: Επιλογή όλων

Server version          5.0.27-log
2) Πήρα dump, το άνοιξα με το notepad++ και να ένα μέρος του που μου φαίνεται κινέζικα
LOCK TABLES `*****` WRITE;
/*!40000 ALTER TABLE `*****` DISABLE KEYS */;
INSERT INTO `*****` VALUES (1,15,6,2006,'00','00','1','METAÎOYPΓƒEIO','0','0','0','','0','0','0','0','0','','','0','0','0','','0','0','0','0','0','','','KTM ìáýñï, âñéæüóáóôå ìå Ýíáí ôáñßöá, Þìïõí óôï ôáîß. TΓ΅ âñïìüëïãá óáò ìå áíáóôÜôùóáí. Γ"ôÝöáíïò','',1153145054,'','','',1,'',0,0,0,0,0,0)
Κανονικά εκεί λέει (φαίνεται από τον browser αν "φέρει" τα δεδομένα μέσω php script) "ΜΕΤΑΞΟΥΡΓΕΙΟ" και "KTM μαύρο, βριζόσαστε με έναν ταρίφα, ήμουν στο ταξί. Tα βρομόλογα σας με αναστάτωσαν. Στέφανος"

Τώρα τι να κάνω;

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από cherouvim » 02 Μάιος 2008 14:44

Είσαι σε MySQL 5 και πήρες dump έτσι:

Κώδικας: Επιλογή όλων

mysqldump -u root -p test > dump.sql
Αν όντως ναι τότε μάλλον τα δεδομένα σώζονται λάθος στη βάση εξαρχής. Απλά κάνει κάποια μετατροπή η web εφαρμογή σου και τα δείχνει σωστά (η σχεδόν σωστά).

Το πρόβλημα είναι στη πηγή δηλαδή, και πιθανός δημιουργήθηκε από κάποιο παλαιότερο migration από MySQL 4 που έγινε με λάθος τρόπο και χωρίς να ενημερωθεί η εφαρμογή οτι πλέον το datastore μπορεί να κρατήσει utf-8 χαρακτήρες.

MerNion
Δημοσιεύσεις: 10
Εγγραφή: 05 Απρ 2008 17:34

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από MerNion » 02 Μάιος 2008 17:17

Ναι έτσι το έκανα..

Και τώρα τι; Υπάρχει κάποιος τρόπος να γίνει αυτό που θέλω; Το ξέρω οτι έχουν καταχωρηθεί με λάθος encoding (ή κάτι τέτοιο) στην βάση.. Μπορώ να κάνω τίποτα για να διορθωθούνε;

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από cherouvim » 02 Μάιος 2008 17:20

Ναι, εγώ τώρα επιβεβαίωσα οτι έχεις σπασμένα data στη βάση.

Κάνε attach ένα κομμάτι από το dump σου να το δω.

MerNion
Δημοσιεύσεις: 10
Εγγραφή: 05 Απρ 2008 17:34

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από MerNion » 02 Μάιος 2008 18:27

Παίζει ρόλο με ποιο πρόγραμμα (text editor) θα ανοίξω το dump να σου "κόψω" κάποιο κομμάτι;

Άβαταρ μέλους
CyberCr33p
Honorary Member
Δημοσιεύσεις: 3194
Εγγραφή: 06 Νοέμ 1999 01:00
Τοποθεσία: Αθήνα
Επικοινωνία:

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από CyberCr33p » 02 Μάιος 2008 18:44

Ο ποιο σωστός τρόπος που έχω δει για διόρθωση τέτοιων προβλημάτων είναι η κατασκευή ενός php script που θα "τραβάει" τα δεδομένα από την προβληματική βάση και θα τα "βάζει" σε μια δεύτερη με σωστά ελληνικά.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από cherouvim » 02 Μάιος 2008 18:56

MerNion έγραψε:Παίζει ρόλο με ποιο πρόγραμμα (text editor) θα ανοίξω το dump να σου "κόψω" κάποιο κομμάτι;
Ναι. Γενικά το notepad++ είναι ΟΚ.

Άβαταρ μέλους
cdhyper
Literature Moderator
Δημοσιεύσεις: 9707
Εγγραφή: 23 Ιουν 2001 03:00
Τοποθεσία: Φωτονερόπετρα
Επικοινωνία:

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από cdhyper » 02 Μάιος 2008 19:14

Άνοιξε το με notepad++ που σέβεται τα encodings. Σώστο σε utf-8 και πείραξε του αναλόγως όλα τα:

Κώδικας: Επιλογή όλων

/*!40101 SET NAMES utf8 */;
...
SET character_set_client = utf8;
...
Μετά κάνε import σε βάση που την έχεις δημιουργήσει έτσι:

Κώδικας: Επιλογή όλων

create database `foo` default character set utf8;
Ρε παιδί υποχρεωτικά να βάλω unicode;

Πάντως το ίδιο ακριβώς έχει συμβεί και με μια δική μου βάση από παλαιότερο migration που έκανε αυτόματα το cpanel. Ενώ στην παλιά εκδοχή ήταν μια χαρά τα ελληνικά στη βάση, μετά κινεζικοποιηθήκανε. Η η mysql φταίει ή το cpanel. Εγώ πάντως που πάτησα το κουμπί δε φταίω.
Σύγκριση τιμών Supermarket: http://www.shopnsave.gr
Νέα Ιταλικα επιπλα κουζινας
Για φιλοσόφους: http://filosofia.gr και http://liantinis.org

MerNion
Δημοσιεύσεις: 10
Εγγραφή: 05 Απρ 2008 17:34

Ελληνικά στις εφαρμογές - κινέζικα στην βάση

Δημοσίευση από MerNion » 02 Μάιος 2008 19:47

-- MySQL dump 10.10
--
-- Host: localhost Database: ****
-- ------------------------------------------------------
-- Server version 5.0.27-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `feedback`
--

DROP TABLE IF EXISTS `feedback`;
CREATE TABLE `feedback` (
`*` int(11) NOT NULL auto_increment,
`*` varchar(255) character set latin1 NOT NULL default '',
`*` varchar(255) character set latin1 NOT NULL default '',
`*` varchar(255) character set latin1 NOT NULL default '',
`*` varchar(255) character set latin1 NOT NULL default '',
`*` text character set latin1 NOT NULL,
`*` tinytext character set latin1 NOT NULL,
`*` int(11) NOT NULL default '0',
`*` varchar(255) character set latin1 NOT NULL default '',
PRIMARY KEY (`*`)
) ENGINE=MyISAM AUTO_INCREMENT=497 DEFAULT CHARSET=greek;

--
-- Dumping data for table `feedback`
--

LOCK TABLES `feedback` WRITE;
/*!40000 ALTER TABLE `feedback` DISABLE KEYS */;
INSERT INTO `feedback` VALUES (1,'olivia','georgiou',' ','cyprus','kai ta kastana matia ine matares!','*',1153393121,'report'),(12,'A','A','asd@dsa.com','A','ÁíáöïñÜ ãéá ôçí Γáôá÷þñçóç 33\r\nKalo tha itan ama thes to site na petixei na afereis oti ***** minima mpenei pou kanei mpam oti ine plaka. allios den prokite na parei kaneis to site sta sovara.\r\npoli kali prospathia pantos alla prepei na ginei gnosto gia na petixei','*',1153664365,'report'),(14,'','','*','','Ìéá ðïõ ãåíéΓÜ äéïñèþíåôå ôï site Γ­Γ΅ áíáöÝñù üôé ãñÜöåôáé äéáäßΓôõï Γáé ΓΌΓ·Γ© äéáäýΓôéï. ÁðëÜ, ãéáôß ÝΓáíå ìðáì! Sorry, Ýôóé; Êáëü ìåóçìÝñé!','*',1154601583,'comments'),(310,'','','8','Áèçíá','ÁíáöïñÜ ãéá ôçí Γáôá÷þñçóç 743\r\n\r\nÄåí åß÷á óõíåéäçôïðïéÞóåé ïôé èá öÝíåôáé ôï mail ìïõ ôüóï åýΓïëá.Áí åßíáé äõíáôüí (åðåéäÞ Γ³Γ¥ áõôü ìðïñåß åýΓïëá Γ­Γ΅ äéáΓñéèåß ôï ïíïìáôåðþíõìü ìïõ) Γ­Γ΅ ôï áíôéΓáôáóôÞóåôå ìå ôï åííáëáΓôéΓΓΌ ìïõ : \r\nΓ"áò åõ÷áñéóôþ Γ¥Γ ôùí ðñïôÝñùí!','*',1199799291,'report'),(382,'ÇÑÁÊËÇΓ"','ÊÁÐÑÉΓ"Γ"ÁΓ"','*','','ÁíáöïñÜ ãéá ôçí Γáôá÷þñçóç 1106\r\n\r\nÌðïñïýìå Γ­Γ΅ óâÞóïõìå ôï e-mail ìïõ Γáé ôçí çëéΓßá?','*',1202370273,'report'),(383,'óðõñïò','**********','*','glyfada','Γ¥Γáíá åíá ëáèùò óôçí áããåëéá ìïõ èåëù Γ­Γ΅ ôï äéïñèùóåôå: ôï óåóôï åéíáé Γ¥Γåé ðïõ ëååé ãéá Γéíçóç ÷ñéáæåôáé Γáé åíá äåí ðáñáΓáëù Γ­Γ΅ äéïñèùèåé ôï óõíôïìïôåñï, ôï ìçíçìá ôï åùáëá 10/2/2008 ΓΉΓ±Γ΅ 13:00 Γáôçãïñéá áëëïõ ôéôëïò áíôá Γáé óðõñïò åõ÷áñçóôùù','*',1202617438,'report'),(496,'Áííá','ÊõñéÜΓΓ§','*','ÇñÜΓëåéï ÊñÞôçò','Ìðïñåßôå Γ­Γ΅ ìïõ ðåßôå ðùò ìðïñþ Γ­Γ΅ âÜëù ìßá áããåëßá?Å÷áóá ôï Γéíçôü ìïõ Γáé ðñïóðáèþ Γ­Γ΅ ΓΆΓ±ΓΎ Ýíáí Γ³ΓµΓ£ΓΓ¥ΓñéìÝíï ößëï ìïõ ìïõ ìÝíåé óôçí ÊáëáìÜôá Γ åßíáé Ýíáò ôñüðïò áíáæÞôçóçò.Γ"áò ðáñáΓáëþ âïçèÞóôå ìå.Åõ÷áñéóôþ ãéá ôïí Γ·Γ±ΓΌΓ­Γ― óáò Γáé ÷ñüíéá ðïëëÜ!','*',1209384165,'comments');
/*!40000 ALTER TABLE `feedback` ENABLE KEYS */;
UNLOCK TABLES;
/*!40101 SET NAMES utf8 */; Αυτό μήπως κακώς υπάρχει εκεί; Μήπως δηλώνει σαν UTF-8 τα δεδομένα ενώ πραγματικά ο browser του τα στέλνει σε "windows-1253"?

Απάντηση

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

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

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