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

 

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

Ερωτηματικά σε εισαγωγή ελληνικών σε MySQL μέσω φόρμας VB.Net

Îåêßíçóå áðü ôï ìÝëïò locust. Τελευταία δημοσίευση από το μέλος locust στις 20-01-2010, 13:04. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  20-01-2010, 11:01 56517

    Ερωτηματικά σε εισαγωγή ελληνικών σε MySQL μέσω φόρμας VB.Net

    Καλημέρα σας.

    Έχω φτιάξει ένα frontend για MySQL σε vb.net . Όταν προσπαθώ να καταχωρήσω σε ένα πίνακα μέσω μιας φόρμας της εφαρμογής μου ελληνικούς χαρακτήρες, αυτοί καταχωρούνται στη βάση ως αγγλικά ερωτηματικά. 
    Το collation στη βάση και τον πίνακα είναι σωστό, δεν έχω κανένα πρόβλημα να περάσω ελληνικά τρέχοντας query απο το administration του MySQL οπότε προσανατολίζομαι στο ότι είναι κάποια ρύθμιση στον κώδικα.

    Ευχαριστώ για το χρόνο σας.
  •  20-01-2010, 11:46 56518 σε απάντηση της 56517

    Απ: Ερωτηματικά σε εισαγωγή ελληνικών σε MySQL μέσω φόρμας VB.Net

    Όχι, είναι πρόβλημα της βάσης, του collation και του driver και το είχαμε ξανακουβεντιάσει εδώ. Το .NET χρησιμοποιεί παντού Unicode οπότε δεν τίθεται σχεδόν ποτέ θέμα κώδικα. Το πρόβλημα με τον MySQL είναι ότι δεν έχει ένα διαφορετικό τύπο text για ASCII και Unicode κείμενο όπως οι άλλες βάσεις (varchar και nvarchar αντίστοιχα) αλλά θεωρεί ότι αν το codepage είναι UTF8 τότε τα δεδομένα σου είναι Unicode.
    Ακόμα και αν η βάση σου έχει UTF8 collation υπάρχει bug στον Connector/NET το οποίο στέλνει τα δεδομένα ως ASCII. Για να το παρακάμψεις αυτό πρέπει να προσθέσεις στο Connection String σου το Character Set=UTF8. Θα έλεγα ότι καλύτερο θα είναι να αγοράσεις ένα καλό driver όπως ο dotConnect for MySQL της Devart.

    Το μόνο σημείο στο οποίο μπορεί να φταίει ο κώδικας σου είναι αν φτιάχνεις τα SQL statements με το χέρι αντί να χρησιμοποιείς parameterized queries ή κάποιο data adapter. Όταν χρησιμοποιείς parameterized queries το .NET αναλαμβάνει να στείλει τις παραμέτρους (κείμενο, νούμερα, ημερομηνίες) ξεχωριστά από το query σε μορφή που καταλαβαίνει πάντα o server άσχετα από τυχόν collations ή locales. Αν φτιάχνεις το query με το χέρι ο server θα θεωρήσει ότι τα δεδομένα είναι ήδη στο σωστό collation. Αν αυτό δεν ισχύει θα έχεις προβλήματα με τα ερωτηματικά, ή δεν θα μεταφράζονται σωστά οι ημερομηνίες, ή θα μπλεξουν τα δεκαδικά κλπ.

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  20-01-2010, 13:04 56523 σε απάντηση της 56518

    Απ: Ερωτηματικά σε εισαγωγή ελληνικών σε MySQL μέσω φόρμας VB.Net

    Διορθώθηκε βάζοντας το character set στο connection string μου.

    Ευχαριστώ
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems