Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

ΜySQL link σε Access και ελληνικοί χαρακτήρες

Îåêßíçóå áðü ôï ìÝëïò t@sos. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 27-01-2007, 12:59. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  26-01-2007, 15:02 24109

    ΜySQL link σε Access και ελληνικοί χαρακτήρες

    (Καταρχάς καλώς σας βρήκα!)

    Στην εταιρία που εργαζομαι υπάρχει μια εφαρμογή φτιαγμένη σε Access .
    Θέλω σε αυτή την εφαρμογή να κάνω link καποια table απο MySQL για να έχω και απο εκει στοιχεία.
    Το προβλημα ειναι ότι εχω προβλημα στους ελληνικούς χαρακτήρες.
    Δεν τους εμφανίζει η Access ή μάλλον τους εμφανίζει με μορφή ???????? ,ενώ με select απο TOAD πχ εμφανίζονται κανονικά.
    Δοκίμασα να παίξω μεταξύ UTF8 και Greek στη MySQL αλλά τίποτα.
    Δοκίμασα με την προσθήκη της εντολής SET NAMES 'greek' στον ODBC της MySQL και το μόνο που πέτυχα ήταν τα ερωτιματικά στην Access να γίνουν κάτι σαν αυτό: OAEOIOAE

    Εχει αντιμετωπίσει κανείς παρόμοιο πρόβλημα? Ευχαριστώ!

  •  26-01-2007, 21:29 24123 σε απάντηση της 24109

    Απ: ΜySQL link σε Access και ελληνικοί χαρακτήρες

    Τα προβλήματα αυτά εμφανίζονται όταν χρησιμοποιεί κανείς ASCII strings αντί για Unicode και γίνεται αναγκαστικά μετατροπή από ένα codepage σε άλλο. Τα ???? εμφανίζονται όταν δεν υπάρχει αντιστοίχιση των χαρακτήρων από το ένα codepage στο άλλο ενώ τα περίεργα γράμματα εμφανίζονται όταν υπάρχει λάθος αντιστοίχιση. Αυτό σημαίνει είτε ότι τα δεδομένα είναι αποθηκευμένα σαν ASCII στον MySQL ή ότι στις ρυθμίσεις του ODBC μετατρέπονται σε ASCII, ακόμα και αν είναι Unicode. Μπορεί βέβαια το string που έχεις αποθηκεύσει να είναι σε λάθος codepage εξαρχής. Για να αποθηκεύσεις ένα string σε μορφή unicode θα πρέπει να το γράψεις N'some string' και όχι 'some string'. Το πρώτο τόσο ο MySQL όσο και ο SQL Server το θεωρούν Unicode ενώ το δεύτερο ASCII με codepage αυτό που ισχύει για το connection.

    Άλλο ένα σημείο στο οποίο μπορεί να δημιουργηθεί πρόβλημα είναι οι ρυθμίσεις του ODBC. Γενικά, μπορείς να ρυθμίσεις την παράμετρο "Translate Character Data" για να γίνεται μετατροπή από το codepage του server σε αυτό του client. Ο SQL Server π.χ. το χρησιμοποιεί αυτό by default. Διαφορετικά, μπορείς να περάσεις με ρύθμιση τη γλώσσα που θέλεις να χρησιμοποιηθεί.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  27-01-2007, 10:43 24130 σε απάντηση της 24123

    Απ: ΜySQL link σε Access και ελληνικοί χαρακτήρες

    Ευχαριστώ για την άμεση απάντηση σας και πιστεύω ότι η λύση του προβλήματος μου κρύβεται εκεί!

    Αν μπορείτε λίγο να με βοηθήσετε σε 2 σημεία

    1.Για να αποθηκεύσεις ένα string σε μορφή unicode θα πρέπει να το γράψεις N'some string' και όχι 'some string'

    Αυτό πως το υλοποιούμε στην πράξη? Στη MySQL έχει επιλογή (αν δεν κατάλαβα λάθος) όπου σε κάθε στήλη ενός πίνακα, μπορείς να επιλέξεις ASCII ή Unicode.
    Δεν αρκεί αν κάνω αυτή την επιλογή?

    2.μπορείς να ρυθμίσεις την παράμετρο "Translate Character Data" για να γίνεται μετατροπή από το codepage του server σε αυτό του client

    Λογικά αναφέρεστε στον ODBC της MySQL αλλά δεν βρήκα τέτοια επιλογή.

    Ελπίζω με τις απαντήσεις σας να λυθεί το πρόβλημα μου!
    Ευχαριστώ.

  •  27-01-2007, 12:59 24132 σε απάντηση της 24130

    Απ: ΜySQL link σε Access και ελληνικοί χαρακτήρες

    Όχι, δεν αρκεί, γιατί πως θα ξέρει ο MySQL ή ο SQL Server τί είναι το string που δίνεις εσύ σε μία INSERT ή UPDATE? Μπορεί να είναι ASCII, μπορεί να είναι Unicode. Γι αυτό πρέπει να γράφεις π.χ. UPDATE MyTable Set MyField=N'Some String' αν θες Unicode, UPDATE MyTable Set MyField='Some String' αν θες ASCII. Όλα αυτά περιγράφονται και στο documentation του MySQL

    Όσο για το ODBC, αναφέρομαι στις ρυθμίσεις του SQL Server, όπως εμφανίζονται στο ODBC Control Panel των Windows. Αν ο MySQL ODBC driver δεν έχει τέτοιες δυνατότητες, θα πρέπει να εξασφαλίσεις ότι το locale του server και του client είναι τα ίδια. Διαβάζοντας το documentation του MySQL ODBC driver δεν βλέπω πάντως να αναφέρεται τέτοια δυνατότητα. Μπορείς όμως να θέσεις Initial Statement για να ορίσεις γλώσσα και charset για τη σύνδεση. Το καλύτερο θα ήταν να φτιάξεις πρώτα ένα πίνακα για να πειραματιστείς, ο οποίος θα περιέχει σε στήλη nvarchar κείμενο το οποίο θα έχεις βάλει μέσα με N'κατιτί'. Έτσι δεν θα έχεις να αναρωτιέσαι πως αποθηκεύθηκαν τα δεδομένα.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems