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

 

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

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

  •  20-01-2010, 11:46

    Απ: Ερωτηματικά σε εισαγωγή ελληνικών σε 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
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems