News:

Wondering if this will always be free?  See why free is better.

Main Menu

Μετατροπή σε UTF-8

Started by vkot, December 27, 2009, 11:02:45 AM

Previous topic - Next topic

vkot

Μετά από το σχόλιό μου περί UTF-8 σε άλλη συζήτηση http://www.simplemachines.org/community/index.php?topic=174368.msg2414547#msg2414547 ανοίγω νέο θέμα για την μετατροπή φόρουμ σε UTF-8.

Πρώτα απ'όλα, έχει καταφέρει κανείς την μετατροπή από windows-1253 σε UTF-8;
Εγώ δεν τα κατάφερα.  αν μπορεί κάποιος να ρίξει λίγο φως, θα ήμουν υπόχρεος...
Έκανα διάφορες δοκιμές, με smf 1.1.11 και με smf 2.0 rc2, χρησιμοποιώντας τοην επιλογή μέσα από την διαχείριση του smf. Πρώτα χωρίς να πειράξω τη βάση, με character set βάσης latin1_swedish_ci, μετά με αλλαγή μέσω sql σε utf8_general_ci. Με collation πινάκων αρχικά latin1_swedish_ci αλλά μετά με αλλαγή μέσω sql σε utf8_general_ci. Παίρνω είτε ???????? είτε "ÍÝá êáé ü÷é ìüíï" (είτε κι άλλο, δεν θυμάμαι).
Υπόψη ότι διάβασα τις οδηγίες μετατροπής που δίνει το simplemachines, διάβασα και συζητήσεις στο φόρουμ όπως αυτη http://www.simplemachines.org/community/index.php?topic=354112.0 (γιατί το smf μου έβγαζε duplicate key σε μια συζήτηση, την έσβησα και δεν με ξαναενόχλησε), διάβασα και σχετικές πληροφορίες στο manual της mysql, και δεν βρήκα άκρη. Διάβασα και κάτι άλλα άρθρα που προτείνουν να κάνουμε τα πεδία κειμένου, blob, πριν τα μετατρέψουμε μόνοι μας με sql. Αλλά, γιατί να μην λειτουργεί η επιλογή του smf; Υποθέτω ότι χρειάζεται κάποια προετοιμασία στην βάση & πίνακες πριν την μετατροπή, σε ότι αφορά στο character set & collation...

For specialized SMF installation/customization, Web Development, Linux Server Administration, click here.
Για εξειδικευμένες υπηρεσίες στα παραπάνω, πατήστε εδώ.

vkot

Και τώρα που έκανα restore την βάση, από backup που είχα πάρει όταν λειτουργούσε το φόρουμ σε windows-1253, το περιεχόμενο του φόρουμ (όχι τα μενού κλπ) βγαίνουν κάπως έτσι "Γ�Γ�Γ΅ Γ�áé ΓΌΓ·Γ© ìüíï". Σκέφτηκα ότι πρέπει να αλλάξω το character set της βάσης γιατί το είχα αλλάξει πριν, αλλά πάλι δεν έγινε τίποτα.
(Εννοείται ότι όλα αυτά τα κάνω σε αντίγραφο του κανονικού φόρουμ!)
For specialized SMF installation/customization, Web Development, Linux Server Administration, click here.
Για εξειδικευμένες υπηρεσίες στα παραπάνω, πατήστε εδώ.

vkot

(σχετικά με το προηγούμενο μήνυμα, έπρεπε να προσθέσω την επιλογή --default-character-set=latin1 στην εντολή mysqldump)

Αυτόν τον καιρό παλεύω να μετατρέψω το 2.0 RC3 φόρουμ μου σε UTF-8.
Όταν χρησιμοποιώ την ενσωματωμένη λειτουργία του SMF, παίρνω το μήνυμα:
QuoteYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group group varbinary(100) NOT NULL default ''' at line 4
File: /xxxxxxxx/httpdocs/forum/Sources/ManageMaintenance.php
Line: 676
Διάβασα κάτι σχετικό σε άλλη συζήτηση και το έκανα, εις μάτην: http://www.simplemachines.org/community/index.php?topic=380260.msg2807379#msg2807379

Μετά δοκίμασα να μετατρέψω το dump της βάσης με την εντολή iconv του linux:
iconv -f WINDOWS-1253 -t UTF-8 smf2.sql -o smf2-utf-8.sql -c --verbose
η οποία φαίνεται να δουλεύει καλά, αλλά όταν πάω να κάνω import παίρνω το μήνυμα:
QuoteERROR 1136 (21S01) at line 1628: Column count doesn't match value count at row 630
δηλαδή πιθανολογώ ότι κάτι μετατράπηκε σε κάτι που δεν θα έπρεπε και έτσι χάλασε η σύνταξη των εντολών insert του dump.
Διάβασα και σελίδες όπως αυτή: http://en.gentoo-wiki.com/wiki/Convert_latin1_to_UTF-8_in_MySQL, και δεν κατάφερα τίποτα.

Θέτω βέβαια την βάση και τους πίνακες σε utf8_general_ci (μέσα στο αρχείο dump που μετά κάνω import, αφού διαγράψω τους παλιούς πίνακες)

Καμιά ιδέα; Καμιά μέθοδος για απροβλημάτιστη μετατροπή; Υπάρχει;
For specialized SMF installation/customization, Web Development, Linux Server Administration, click here.
Για εξειδικευμένες υπηρεσίες στα παραπάνω, πατήστε εδώ.


vkot

Quote from: nikan on October 16, 2010, 03:07:06 AM
Δοκίμασε το Phoca Changing Collation tool

Μα, αυτό αλλάζει μόνο το collation, δεν μεταφράζει το περιεχόμενο σε UTF-8. :(
For specialized SMF installation/customization, Web Development, Linux Server Administration, click here.
Για εξειδικευμένες υπηρεσίες στα παραπάνω, πατήστε εδώ.

nikan

Στο δικό μου δούλεψε πάντως. Μία δοκιμή δεν βλάπτει.

GoofyX

@vkot, η αρχική σου βάση σε τι character set ήταν;

Πάντως, ο καλύτερος τρόπος για μένα για να πάρεις backup είναι χρησιμοποιώντας το mysqldump. Εκεί του λες να συνδεθεί με το character set που θέλεις (utf-8), παίρνεις το backup σου και στη νέα σου βάση που υποτίθεται θα είναι σε utf-8, το κάνεις import χρησιμοποιώντας το mysql εργαλείο.
... Morpheus: What is "real"? How do you define "real"? If you 're talking about what you can feel, what you can smell, what you can taste and see, then "real" is simply electrical signals interpreted by your brain...

vkot

Τελικά η μετατροπή έγινε! Με mysqldump, iconv, και εισαγωγή σε νέα βάση (όπου βάση και πίνακες σε utf8_general_ci)

Το πρόβλημα ήταν στην μετατροπή μερικών συγκεκριμένων εγγραφών στους πίνακες:

- Υπήρχε ένα μήνυμα χρήστη το οποίο ήταν ήδη σε UTF-8 (είχε σταλεί από κινητό, του οποίου ο browser έστελνε τις απαντήσεις σε UTF-8) οπότε κόλλαγε η μετατροπή. Το μήνυμα διαγράφηκε.

- Καμιά 30αριά εγγραφές από τον πίνακα log_search_subjects, οι οποίες κατά το import της βάσης μετά την μετατροπή, έφβαζαν σφάλμα "Duplicate entry for key 1". Πρόκειται για εγγραφές του τύπου:
INSERT INTO `log_search_subjects` VALUES ('Χρωστούμενα',27202);
INSERT INTO `log_search_subjects` VALUES ('χρωστούμενα',27202);

Επειδή έχουμε utf8-case insensitive, θεωρεί ότι Χρωστούμενα = χρωστούμενα και γι αυτό βγάζει ότι η τιμή κλειδιού υπάρχει ήδη στον πίνακα. Διαγράφηκε το περιεχόμενο του log_search_subjects (που είναι μονάχα ένα αρχείο καταγραφής αναζητήσεων) και όλα ΟΚ.
For specialized SMF installation/customization, Web Development, Linux Server Administration, click here.
Για εξειδικευμένες υπηρεσίες στα παραπάνω, πατήστε εδώ.

visualuser

 vkot


προσπαθω να μετατρεψω μια βαση σε utf-8 αλλα δεν καθεται,
μηπως μπορεις να βοηθησεις ελαχιστως?

O:)

vkot

Ίσως μπορώ να βοηθήσω, αν μου πεις λεπτομερώς ποια διαδικασία ακολούθησες και που κόλλησες (τι μηνύματα σφαλμάτων έλαβες, τι αποτέλεσμα, κλπ)
For specialized SMF installation/customization, Web Development, Linux Server Administration, click here.
Για εξειδικευμένες υπηρεσίες στα παραπάνω, πατήστε εδώ.

visualuser

vkot ευχαριστω,

αν θες να το δουμε σε 3-4 μερες ξανα,
γιατι εκανα μια μικροεπεμβαση και τωρα ειμαι σε φαση αναρωσης.


Θενκς παντως για την διαθεση.

Advertisement: