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

 

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

Πρόβλημα σε forms που έχουν Ελληνικά

Îåêßíçóå áðü ôï ìÝëïò sam_sam. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 21-11-2016, 10:42. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  26-10-2012, 14:43 71484

    Πρόβλημα σε forms που έχουν Ελληνικά

    Γεια σας,

    Έχω πραγματοποιήσει εγκατάσταση Windows 7  και VS2010.

    Το μόνο πρόβλημα που αντιμετωπίζω είναι :

    Από τις παλιές μου Application, κάποιες forms που έχουν Ελληνικά τις αναγνωρίζει αλλά σε κάποιες βγάζει χαρακτήρες αλαμπουρνέζικους στα κουμπιά και σε αλλά.

    Τι να κάνω;


    Samaras Christos
  •  29-10-2012, 15:33 71495 σε απάντηση της 71484

    Απ: Πρόβλημα σε forms που έχουν Ελληνικά

    Αν κάνεις μία αναζήτηση στο forum θα δεις ότι τέτοια προβλήματα οφείλονται στις εφαρμογές τις ίδιες και όχι στο λειτουργικό ή την έκδοση του Visual Studio.

    Το πρόβλημα είναι πάντα ότι αποθηκεύεις τα ελληνικά ως ASCII αντί για Unicode με αποτέλεσμα η μορφή με την οποία θα εμφανιστούν να εξαρτάται από το system locale του μηχανήματος στο οποίο αποθηκευτηκαν τα δεδομένα, της βάσης και του μηχανήματος στο οποίο διαβάζονται τα δεδομένα. Αν αποθηκεύεις τα δεδομένα ως unicode (δηλαδή nvarchar πεδία στη βάση, UTF8 ή UTF16 encoding αν πρόκειται για αρχείο), δεν θα έχεις κανένα πρόβλημα σε όποιο μηχάνημα και να προσπαθήσεις να τα διαβάσεις. Αν όμως τα αποθηκεύσεις ως ASCII, θα πρέπει και το αρχικό μηχάνημα και το τελικό να έχουν ελληνικό system locale και το collation της βάσης να είναι ελληνικό. Διαφορετικά υπάρχει πιθανότητα να καταλήξεις με κινέζικα (αν είσαι τυχερός, οπότε μπορείς να ανακτήσεις τα δεδομένα), ή με κουτάκια και ερωτηματικά (οπότε τα δεδομένα έχουν χαθεί). 

    Μπορεί για παράδειγμα, αν το αρχικό μηχάνημα είχε αγγλικό locale και το νέο επίσης αγγλικό, τα δεδομένα να φανούν κινέζικα αλλά να μην καταστραφούν, εφόσον βέβαια δεν δοκιμάσεις να γράψεις από πάνω.

    Το τί θα κάνεις τώρα εξαρτάται από το αν μιλάμε για δικό σου κώδικα ή για προγράμματα που έχεις αγοράσει από άλλους. Τον κώδικα σου απλά τον διορθώνεις. Για τις εφαρμογές των άλλων, θα πρέπει να αλλάξεις το system locale του μηχανήματος σου έτσι ώστε να είναι ίδιο με αυτό του αρχικού μηχανήματος.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  21-11-2016, 00:33 77872 σε απάντηση της 71495

    Απ: Πρόβλημα σε forms που έχουν Ελληνικά

    Έχω το ίδιο πρόβλημα. Είμαι πολύ αρχάριος στον προγραμματισμό. Και ξεκίνησα με visual studio 2015 για να φτιάξω ένα πρόγραμμα για την δουλειά ενός φίλου μου. Το θέμα είναι ότι λειτουργεί με λατινικούς χαρακτήρες αλλά όταν καταχωρώ με ελληνικούς και τα αποθηκεύω σε μια βάση δεδομένων και τα καλώ εμφανίζονται τα λεγόμενα "αλαμπουρνεζικα"... Γνωρίζεται πώς να το διορθώσω?
  •  21-11-2016, 10:42 77873 σε απάντηση της 77872

    Απ: Πρόβλημα σε forms που έχουν Ελληνικά

    Η παραπάνω απάντηση ισχύει - το .NET και ο SQL Server δεν έχουν πρόβλημα με τα ελληνικά γιατί χρησιμοποιούν Unicode, εκτός και αν επιβάλεις τη μετατροπή σε ASCII. Μία τέτοια περίπτωση είναι να χρησιμοποιήσεις αντί για nvarchar (Unicode) πεδία στη βάση, varchar (ASCII) με μή ελληνικό collation. Ή αν αποθηκεύσεις σε αρχείο με καρφωτό ASCII codepage αντί για το default, UTF8.
     
    Η λύση είναι να αλλάξεις τα πεδία της βάσης σε nvarchar.

    Άλλη περίπτωση είναι να φτιάξεις ένα SQL string με string concatenation και να περάσεις τα ελληνικά ως ASCII (SomeField ='ΕλληνικάΑλλάAscii') αντί για Unicode, με το πρόθεμα Ν (= N'ΕλληνικάΣωστά'). Και αυτό όμως είναι κουκούλωμα - SQL strings αυτού του τύπου παρακαλάνε για SQL Injection. Φαντάσου κάποιος να δώσει επώνυμο `x'; drop table users;--`.


    Σε αυτή την περίπτωση η πραγματική λύση είναι να χρησιμοποιήσεις parameterized queries και να περάσεις το κείμενο ως παράμετρο. Η πιθανότητα SQL injection ή conversion error εξαφανίζεται, και ο κώδικας θα είναι πιο καθαρός και πιο γρήγορος.

    ΥΓ Βάσεις όπως η MySQL είναι λίγο "γιαλατζί" στο θέμα του Unicode. Αντί για nvarchar πρέπει να ορίσεις ότι το πεδίο είναι varchar με codepage UTF8.  Μπορείς να αποφύγεις πάρα πολλά προβλήματα, και να έχεις και πιο γρήγορη βάση, βάζοντας ακόμα και την (τσάμπα) Express έκδοση του SQL Server 2016

    ΥΓ2 Για συγκεκριμένη απάντηση θα πρέπει να μας πεις τί βάση χρησιμοποιείς, ποιός είναι ο τύπος των πεδίων στη βάση και να προσθέσεις τον κώδικα που γράφει τα δεδομένα στη βάση.

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