στήλη φωνής υποστήριξης ASP.NET
Για να προσαρμόσετε αυτήν τη στήλη στις ανάγκες σας, σας προσκαλούμε να υποβάλετε τις ιδέες σας σχετικά με θέματα που σας ενδιαφέρουν και θέματα που θέλετε να δείτε να αντιμετωπίζονται σε μελλοντικά άρθρα της Γνωσιακής βάσης και να υποστηρίξετε τις στήλες φωνής. Μπορείτε να υποβάλετε τις ιδέες και τα σχόλιά σας χρησιμοποιώντας τη φόρμα Ask For It. Υπάρχει επίσης μια σύνδεση προς τη φόρμα στο κάτω μέρος αυτής της στήλης.
Εισαγωγή
Καλώς όρισες! Αυτός είναι ο Sukesh Khare με την ομάδα υποστήριξης προγραμματιστών της Microsoft ASP.NET. Αυτή είναι η πρώτη φορά που συντάξω μια στήλη Support Voice. Ανυπομονώ να συντάξουν περισσότερες τέτοιες στήλες τους επόμενους μήνες.
Για τη στήλη αυτού του μήνα, θα συζητήσω θέματα παγκοσμιοποίησης στις σελίδες active server (ASP) και ASP.NET, τα ζητήματα που αντιμετωπίζουμε στο ASP, τον τρόπο με τον οποίο έχουν αλλάξει τα πράγματα στο ASP.NET 1x και τι συμβαίνει με το ASP.NET 2,0 στο μέτωπο της παγκοσμιοποίησης. Σημείωση Εάν συναντήσετε έναν όρο που δεν γνωρίζετε, ανατρέξτε στην ενότητα Γλωσσάρι στο κάτω μέρος αυτής της στήλης.Ζητήματα παγκοσμιοποίησης στο ASP
Πριν από ASP.NET, δεν υπήρχε δομημένη υποστήριξη για την ανάπτυξη εφαρμογών για καθολικούς χρήστες. Κατά την πρώιμη ανάπτυξη του ASP, προγραμματιστές όπως εγώ βρήκαν μόνο διασκορπισμένη υποστήριξη για την παγκοσμιοποίηση σε λειτουργικά συστήματα, προγράμματα περιήγησης, ASP και συστήματα back-end. Ωστόσο, σπάνια παρατηρούσαμε οποιαδήποτε αυτόματη σύνδεση σε αυτές τις εφαρμογές. Ευτυχώς, κατανοήσαμε έννοιες όπως σύνολα χαρακτήρων, κωδικοσελίδες, γλώσσες προγράμματος περιήγησης και γραμματοσειρές τις οποίες θα μπορούσαμε να αξιοποιήσουμε για την ανάπτυξη εφαρμογών για καθολικούς χρήστες.
Θα ήταν πολύ δύσκολο να χωριστούν σε κατηγορίες όλα τα ζητήματα παγκοσμιοποίησης που έχουν δει όσοι από εμάς ASP.NET. Αντί για αυτό, θα παρατίθεται μια σειρά εννοιών που σχετίζονται με μια ποικιλία από αυτά τα ζητήματα.Σύνολα χαρακτήρων και κωδικοσελίδες
Όλοι γνωρίζουμε ότι οι χαρακτήρες στην οθόνη του υπολογιστή μας είναι απλώς μια σειρά byte. Η σειρά των byte μπορεί να δημιουργηθεί και να ερμηνευθεί με διάφορους τρόπους. Εάν η ερμηνεία χρησιμοποιεί μια κωδικοποίηση που είναι διαφορετική από την κωδικοποίηση με την οποία δημιουργήθηκε ο πίνακας byte, η ερμηνεία θα εμφανίζεται ως κάδος απορριμμάτων. Τα σύνολα χαρακτήρων (σύνολα χαρακτήρων) είναι μορφές κωδικοποίησης που χρησιμοποιούνται συνήθως από τα προγράμματα περιήγησης. Η ιδιότητα Codepage, η οποία ισχύει περισσότερο για μετατροπές από την πλευρά του διακομιστή, είναι απλώς ένας πίνακας μετατροπής που καθορίζει τον τρόπο κωδικοποίησης των χαρακτήρων.
Τα προγράμματα περιήγησης κωδικοποιούν τα ταχυδρομικά δεδομένα της φόρμας σύμφωνα με το τρέχον σύνολο χαρακτήρων. Εάν το τρέχον σύνολο χαρακτήρων είναι "windows-1256", τότε η μετάδοση των byte στο διακομιστή κωδικοποιείται επίσης ως "windows-1256". Κατά την ερμηνεία της asp, οι συλλογές Form και Querystring δεν δημιουργούνται μέχρι να γίνει αναφορά σε κώδικα. Όταν δημιουργούνται, τα δεδομένα συμβολοσειράς μετατρέπονται σε Unicode σύμφωνα με την τρέχουσα κωδικοσελίδα. (Από προεπιλογή, τόσο το ASP όσο και ASP.NET επεξεργάζονται περιεχόμενο χρησιμοποιώντας τη μορφή Unicode). Είναι πολύ σημαντικό να ορίσετε τη σωστή κωδικοσελίδα πριν αναφερθείτε στις συλλογές. διαφορετικά, η αναπαράσταση Unicode στη μνήμη δεν θα είναι σωστή. Για να ορίσετε μια κωδικοσελίδα, χρησιμοποιήστε το Session.Codepage ή το Response.Codepage. Η σελίδα Response.Codepage είναι διαθέσιμη μόνο στις υπηρεσίες Microsoft Internet Information Services (IIS) 5.1 ή σε νεότερες εκδόσεις. Για πληροφορίες σχετικά με τις ακέραιες τιμές (οι οποίες αντιστοιχούν στο σύνολο χαρακτήρων) στις οποίες θα ορίσουμε αυτές τις ιδιότητες, επισκεφθείτε την ακόλουθη τοποθεσία Της Microsoft στο Web:Αναγνώρισηhttp://msdn2.microsoft.com/en-us/library/Aa752010.aspxΓια παράδειγμα, για να ορίσετε την κωδικοσελίδα για την αραβική γλώσσα, χρησιμοποιήστε τον ακόλουθο κώδικα:
συνόλου χαρακτήρων
Session.Codepage = 1256
Η σελίδα Response.Codepage θα επηρεάσει μόνο την τρέχουσα απόκριση. Ωστόσο, η σελίδα Session.Codepage θα επηρεάσει όλες τις απαντήσεις που έχει κάνει ο τρέχων χρήστης. Όταν η σελίδα κώδικα έχει οριστεί χρησιμοποιώντας μία από αυτές τις ιδιότητες και δημιουργούνται οι συλλογές Form και Querystring, αυτή η αλλαγή στην τρέχουσα κωδικοσελίδα έχει ως αποτέλεσμα η μέθοδος Response.Write να μετασχηματίζει το Unicode στη μνήμη στην τρέχουσα κωδικοσελίδα. Για περισσότερες πληροφορίες σχετικά με αυτό το θέμα, επισκεφθείτε την ακόλουθη τοποθεσία Web του MSDN:
Ο ορισμός της κωδικοσελίδας για μετατροπές συμβολοσειρών (ASP)http://msdn2.microsoft.com/en-us/library/ms525789.aspxΗ κατώτατη γραμμή όσον αφορά τα ζητήματα που σχετίζονται με τα σύνολα χαρακτήρων και τις σελίδες κώδικα είναι ότι τα charset προγράμματος-πελάτη και η κωδικοσελίδα διακομιστή πρέπει να συμφωνούν.
Αποδοχή γλωσσών
Εάν ένας προγραμματιστής ASP θέλει να μάθει ποιες γλώσσες έχει ορίσει ένας χρήστης στο πρόγραμμα περιήγησής του, ο προγραμματιστής μπορεί να χρησιμοποιήσει τη μεταβλητή Request.ServerVariables ("HTTP_ACCEPT_LANGUAGE") για να βρει τη λίστα των γλωσσών στις οποίες ο χρήστης θα ήθελε να διαβάσει την απάντηση (όπως Αγγλικά, Γερμανικά ή Ινδικά) και τη σειρά προτίμησης στην οποία ο χρήστης θα ήθελε να δει αυτές τις γλώσσες. Στο ASP.NET, παρόμοιες πληροφορίες υπάρχουν στην ιδιότητα Request.UserLanguages ως πίνακας.
Για περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης αυτών των πληροφοριών σε κώδικα ASP, κάντε κλικ στον αριθμό του άρθρου που ακολουθεί για να προβάλετε το άρθρο στη Γνωσιακή βάση της Microsoft:229690 Πώς μπορείτε να ορίσετε το αναγνωριστικό τοπικών ρυθμίσεων ASP σύμφωνα με τις ρυθμίσεις γλώσσας του προγράμματος περιήγησης
Εμφάνιση συνόλων χαρακτήρων πολλών byte στον Internet Explorer
Η μόνη μορφή κωδικοποίησης που μπορεί να εμφανίσει ένα σύνολο χαρακτήρων πολλών byte είναι Unicode (UTF-8). Με το UTF-8, μπορούμε να εμφανίσουμε κυριλλικά, ινδικά και ιαπωνικά όλα στην ίδια σελίδα. Εάν δεν χρησιμοποιήσουμε UTF-8, μπορούμε να εμφανίζουμε μόνο μία από αυτές τις γλώσσες κάθε φορά. Για να ορίσετε το σύνολο χαρακτήρων του προγράμματος περιήγησης, χρησιμοποιήστε την ιδιότητα Response.CharSet.
Στατικοί χαρακτήρες πολλών byte σε μια σελίδα
Για να εμφανίζονται οι χαρακτήρες πολλών byte που είναι αποθηκευμένοι απευθείας στη σελίδα, πρέπει πρώτα να αποθηκεύσουμε τη σελίδα με συγκεκριμένη κωδικοποίηση. Το UTF-8 θα είναι το καλύτερο, αλλά θα λειτουργεί επίσης μια συγκεκριμένη κωδικοσελίδα (αντιστοιχισμένη με την κωδικοσελίδα των χαρακτήρων).
Η αποθήκευση ενός αρχείου ASP με χρήση του Microsoft Visual InterDev δεν έχει αποτέλεσμα εδώ, καθώς το Visual InterDev μπορεί να αποθηκεύσει μόνο σε Αγγλικά ANSI ή Unicode. Οποιαδήποτε σελίδα ASP που αποθηκεύεται ως Unicode δεν υποστηρίζεται από το ASP. Στο Microsoft Visual Studio .NET, μπορείτε να αποθηκεύσετε ένα αρχείο σε οποιαδήποτε κωδικοποίηση. Υπάρχουν δύο τρόποι για να το κάνετε αυτό. Ο προεπιλεγμένος τρόπος είναι να αποθηκεύσετε το αρχείο χρησιμοποιώντας την τρέχουσα κωδικοσελίδα για το χρήστη. Ένας πρόσθετος τρόπος για να αποθηκεύσετε ένα αρχείο με κωδικοποίηση είναι ο εξής: Στο μενού Αρχείο , κάντε κλικ στην επιλογή Αποθήκευση αρχείου ως. Στο παράθυρο διαλόγουΑποθήκευση αρχείου ως, κάντε κλικ στο αναπτυσσόμενο βέλος στο κουμπίΑποθήκευση. Όταν κάνετε κλικ στο βέλος, οι επιλογές είναι Αποθήκευση και Αποθήκευση με κωδικοποίηση. Όταν κάνετε κλικ στο κουμπί Αποθήκευση με κωδικοποίηση, εμφανίζεται το παράθυρο διαλόγου Επιλογές αποθήκευσης για προχωρημένους όπου μπορείτε να επιλέξετε τον τύπο κωδικοποίησης που θέλετε να εφαρμόσετε από μια λίστα με τις κωδικοσελίδες που είναι εγκατεστημένες στον υπολογιστή. Σημείωση Αυτή η επιλογή αλλάζει την κωδικοποίηση για τη λειτουργία αποθήκευσης, αλλά είναι μόνο για μία φορά. Η επόμενη αποθήκευση θα οριστεί ξανά στην προεπιλογή. Για να αλλάξετε την προεπιλεγμένη σελίδα κώδικα, κάντε κλικ στην επιλογή Επιλογές αποθήκευσης για προχωρημένους στο μενούΑρχείο. Στο παράθυρο διαλόγου Επιλογές αποθήκευσης για προχωρημένους , μπορείτε να ορίσετε την προεπιλεγμένη κωδικοποίηση για τις λειτουργίες αποθήκευσης στην κωδικοσελίδα της επιλογής σας. Αυτές οι μέθοδοι σχετίζονται με τον τρόπο αποθήκευσης του αρχείου στο δίσκο. Ωστόσο, για να ελέγξετε την έξοδο για asp, όπως έχει ήδη συζητηθεί, πρέπει να ορίσετε τις ιδιότητες Session.CodePage και Response.CharSet. Με το IIS 5.1 και νεότερες εκδόσεις, μπορούμε επίσης να χρησιμοποιήσουμε την ιδιότητα Response.CodePage.Προεπιλεγμένη ΚΩΔΙΚΟΣΕΛΗ στο διακομιστή
Οι προεπιλεγμένες τοπικές ρυθμίσεις και η προεπιλεγμένη σελίδα κώδικα για τη σελίδα εξαρτώνται από τις ρυθμίσεις μητρώου για το . ΠΡΟΕΠΙΛΕΓΜΈΝΟς χρήστης. Μπορούμε να βρούμε το διεθνές κλειδί στην ομάδα μητρώου HKEY_USERS\.DEFAULT\Control Panel\International. Μπορούμε επίσης να αλλάξουμε τη συμπεριφορά των τοπικών ρυθμίσεων που επιλέγονται από τις IIS.
Εάν ο συνδεδεμένος χρήστης έχει ορίσει τις ίδιες τοπικές ρυθμίσεις με το παραπάνω πλήκτρο ή το προεπιλεγμένο σύστημα, τότε προηγείται η ρύθμιση χρήστη. Παράδειγμα: Η φράση Default locale has date format set as 11.1.2004, while the logged on user (with the same locale set) has the date format as 1/1/2004. Η ρύθμιση 11/1/2004 θα τεθεί σε ισχύ για την ASP. (Για ASP.NET, αυτό μπορεί να διαφέρει. Σε ορισμένες εγκαταστάσεις, ο χρήστης ASPNET θα έχει το δικό του προφίλ που θα εμφανίζεται στην περιοχή HKEY_USERS κατά τη φόρτωσή του. Σε άλλες, θα χρησιμοποιήσει το . ΠΡΟΕΠΙΛΕΓΜΈΝΟ προφίλ. Μπορούμε επίσης να χρησιμοποιήσουμε το χαρακτηριστικό codepage στη δήλωση <%@ %>. Αυτό θα πρέπει να χρησιμοποιείται όταν το αρχείο αποθηκεύεται με διαφορετική κωδικοποίηση από την προεπιλογή, όπως η κωδικοσελίδα 932 (Ιαπωνικά)).Προβλήματα κωδικοσελίδων έναντι ζητημάτων μετατροπής γραμματοσειράς: ποιο είναι ποιο;
Μερικές φορές, μπορεί να βλέπετε ένα χαρακτήρα ερωτηματικού (?) ή ένα πλαίσιο όπου πρέπει να εμφανίζεται ένας χαρακτήρας.
Ζητήματα μετατροπής κωδικοσελίδων
Όταν ένας χαρακτήρας αντικαθίσταται από χαρακτήρα με ερωτηματικό (?), αυτό αποτελεί ένδειξη ότι έχει προκύψει ένα πρόβλημα μετατροπής κωδικοσελίδας. Το ερωτηματικό (?) είναι ένας προεπιλεγμένος χαρακτήρας για τη μετατροπή της κωδικοσελίδας και ουσιαστικά σημαίνει ότι το λειτουργικό σύστημα δεν γνωρίζει πώς να χειριστεί την τιμή χαρακτήρα και να τη μετατρέψει. Αντικαθιστά την τιμή χαρακτήρα με ένα ερωτηματικό (?). Αυτό μπορεί να σημαίνει ότι ο χαρακτήρας έχει μη έγκυρη τιμή για τη σελίδα κώδικα ή ότι η σελίδα κώδικα που απαιτείται για τη μετατροπή δεν έχει εγκατασταθεί.
Προβλήματα μετατροπής γραμματοσειράς
Όταν ένας χαρακτήρας αντικαθίσταται από ένα πλαίσιο, αυτό αποτελεί ένδειξη ότι έχει παρουσιαστεί πρόβλημα μετατροπής γραμματοσειράς. Αυτό συμβαίνει στην πλευρά του προγράμματος-πελάτη, όταν το πρόγραμμα-πελάτης δεν έχει εγκατεστημένη τη σωστή γραμματοσειρά για να εμφανίσει σωστά αυτόν το χαρακτήρα. Για παράδειγμα, όταν ένας χαρακτήρας προέρχεται από το ιαπωνικό σύνολο χαρακτήρων και ο υπολογιστής-πελάτης δεν έχει εγκατεστημένες τις ιαπωνικές γραμματοσειρές, ο ιαπωνικός χαρακτήρας εμφανίζεται ως πλαίσιο.
Στη συνέχεια, θα μιλήσω για το πώς άλλαξαν τα πράγματα στο ASP.NET 1.x και πώς αυτές οι αλλαγές επηρεάζουν ζητήματα παγκοσμιοποίησης στο πλαίσιο των ASP.NET.Ζητήματα παγκοσμιοποίησης στο ASP.NET 1.x:
Με ASP.NET, παρουσιάστηκαν τρία εξαιρετικά πράγματα:
-
Η ετικέτα>> "<" στο αρχείο
web.config Η ετικέτα <> παγκοσμιοποίησης μας απομακρύνει από τις ασυνάρτητες έννοιες των κωδικοσελίδων και των συνόλων χαρακτήρων και μας επιτρέπει να ελέγχουμε τις περισσότερες από τις παραλλαγές του ASP.NET. -
Ο χώρος
ονομάτων System.Globalization Ο χώρος ονομάτων της Παγκοσμιοποίησης μας παρέχει την προγραμματιστική δύναμη χειρισμού της παγκοσμιοποίησης. -
Η έννοια των αρχείων πόρων έχει βελτιωθεί σημαντικά.
Δεν αντιμετωπίζουμε τα αρχεία πόρων με τον τρόπο που συνηθίζαμε στην asp. Τώρα, τα αρχεία πόρων έχουν τη μορφή αρχείων XML κατά τη σχεδίαση και την ανάπτυξή τους και υπάρχουν ως συναρτήσεις κατά το χρόνο εκτέλεσης.
Η ετικέτα Ρύθμιση παραμέτρων καθολικής ρύθμισης παραμέτρων:
Δύο σημαντικές ρυθμίσεις στην ετικέτα είναι οι εξής:
<globalization
requestEncoding="utf-8"
responseEncoding="utf-8" />
Ακολουθούν άλλες πιθανές περιοχές ρυθμίσεων:
fileEncoding |
Καθορίζει την προεπιλεγμένη κωδικοποίηση για την ανάλυση αρχείων .aspx, .asmx και .asax. Τα αρχεία Unicode και UTF-8 που έχουν αποθηκευτεί με το πρόθεμα του σημαδιού παραγγελίας byte (με υπογραφή) θα αναγνωρίζονται αυτόματα, ανεξάρτητα από την τιμή του αρχείουEncoding. |
Πολιτισμού |
Καθορίζει την προεπιλεγμένη κουλτούρα για την επεξεργασία εισερχόμενων αιτήσεων Web (ισχύει για μεθόδους κλάσεων από το χώρο ονομάτων System.Globalization). |
περιβάλλον εργασίας χρήστη |
Καθορίζει την προεπιλεγμένη κουλτούρα για την επεξεργασία αναζητήσεων πόρων που εξαρτώνται από τοπικές ρυθμίσεις (δορυφορικές συνελεύσεις). |
Για περισσότερες πληροφορίες σχετικά με τις συμβολοσειρές κουλτούρας (αξίες κουλτούρας και ουϊκότητας), επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:
System.Globalization.CultureInfoClasshttp://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxΑυτές οι ρυθμίσεις εφαρμόζονται από ASP.NET μετά την ολοκλήρωση της απόκρισης και πριν από την παράδοση της αίτησης στην εφαρμογή σας. Για την απάντησηEncoding, το buffer που δημιουργείται για την αποθήκευση του αποτελέσματος έχει οριστεί σε αυτήν την κωδικοποίηση. Ό,τι εισέρχεται σε αυτό το buffer θα κωδικοποιείται σύμφωνα με τη ρύθμιση κατά την εισαγωγή του στο buffer. Για αίτησηEncoding, ο χρόνος εκτέλεσης θα διαβάσει την αίτηση και θα την ερμηνεύσει σύμφωνα με τη ρύθμιση σε αυτή την ενότητα. Ωστόσο, αυτή είναι μια ρύθμιση που μπορεί να προκαλέσει προβλήματα. Ο παρακάτω πίνακας δείχνει τη διάταξη bit μιας έγκυρης ακολουθίας UTF-8 byte. Εάν η τιμή χαρακτήρα εμπίπτει στο πρότυπο ASCII 7 bit, η τιμή των byte δεν τροποποιείται. Εάν η τιμή είναι επάνω από 127, πρέπει να ακολουθεί τους παρακάτω κανόνες. Το κύριο σύνολο bit δείχνει πόσοι χαρακτήρες βρίσκονται στην ακολουθία. Κάθε byte μετά το πρώτο πρέπει να ξεκινά με το πρώτο bit να έχει οριστεί σε 1. Διάταξη UTF-8 byte:
Byte |
Bits |
Εκπροσώπηση |
1 |
7 |
0vvvvvvv |
2 |
11 |
110vvvvv 10vvvvvvv |
3 |
16 |
1110vvvv 10vvvvvvv 10vvvvv |
4 |
21 |
11110vvv 10vvvvvv 10vvvvvv 10vvvvv |
Εδώ έρχεται το πρόβλημα. Εάν το πρόγραμμα περιήγησης κωδικοποιήσει την αίτηση σύμφωνα με κωδικοποίηση ενός byte (όπως iso-8859-1), οι τιμές που είναι μεγαλύτερες από 127 δεν θα είναι έγκυρες σύμφωνα με την παραπάνω διάταξη. Όταν διαβάζονται στο buffer UTF-8, οι μη έγκυροι χαρακτήρες απλώς απορρίπτονται από το αποτέλεσμα.
Αλλαγές κωδικοποίησης χρόνου εκτέλεσης
Στο συμβάν Application_BeginRequest, μπορούμε να τροποποιήσουμε την τιμή της αίτησηςEncoding και να τεθεί σε ισχύ πριν από την επεξεργασία της αίτησης. Για την απάντηση, το συμβάν Page_PreRender είναι η τελευταία ευκαιρία για να τροποποιήσετε την κωδικοποίηση του αποτελέσματος. Σημειώστε επίσης ότι η επιλογή Response.Write θα τοποθετήσει χαρακτήρες σε αυτό το buffer μόλις την ονομάσουμε, επομένως φροντίστε να έχετε ορίσει τη σωστή κωδικοποίηση πριν χρησιμοποιήσετε τη λειτουργία Response.Write.
Τα αρχικά δεδομένα δεν είναι Unicode: Πώς μπορείτε να κάνετε τον Internet Explorer να ερμηνεύσει τα charset πολλών byte;
Μπορούμε επίσης να κάνουμε ASP.NET να συμπεριφέρονται όπως η ASP εάν χρειάζεται. Για να συμβεί αυτό, πρέπει να ορίσουμε την απάντησηEncoding και requestEncoding στα windows-1252 (μια πληρέστερη κωδικοποίηση από το iso-8859-1) και να χρησιμοποιήσουμε την ιδιότητα Response.Charset για να εμφανίσετε σωστά το κείμενο. Αυτό λειτουργεί επειδή τα windows-1252 είναι ένας συνδυασμός κωδικοποίησης ενός byte και δεν τροποποιούν τυχόν byte που προστίθενται στο buffer. Επομένως, οι χαρακτήρες των δύο byte αποστέλλονται ως μια σειρά από μεμονωμένα byte. Στη συνέχεια, μπορούμε να πούμε στον Internet Explorer πώς να ερμηνεύει τα byte χρησιμοποιώντας την ιδιότητα Response.Charset. Αυτό το σενάριο μπορεί να είναι απαραίτητο εάν τα αρχικά δεδομένα δεν είναι αποθηκευμένα ως Unicode ή UTF-8, όπως μια επιστρεφόμενη τιμή από ένα αντικείμενο COM ή εάν τα δεδομένα είναι αποθηκευμένα στη Microsoft SQL Server σε ένα πεδίο που δεν είναι N (όπως varchar).
Ζητήματα SQL Server και ASP.NET παγκοσμιοποίησης
Εισαγωγή δεδομένων Unicode στο SQL Server
Ο καλύτερος τρόπος για να αποθηκεύσετε δεδομένα σε SQL Server είναι να χρησιμοποιήσετε Unicode. Κάθε φορά που χρησιμοποιούμε insert, UPDATE κ.λπ., εάν υπάρχει έστω και μια μικρότερη πιθανότητα δεδομένων Unicode, πρέπει να προσθέσουμε ένα N πριν από την τιμή. Αυτό υποδεικνύει στη βάση δεδομένων ότι η τιμή είναι Unicode. Ένα καλό παράδειγμα είναι τα αντικείμενα ADO. Αυτό γίνεται αυτόματα εάν χρησιμοποιήσουμε το αντικείμενο Recordset για να προσθέσουμε νέες εγγραφές.
Ακολουθεί ένα παράδειγμα:
INSERT INTO MusicAlbum (Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'Abida', 4653, 403)
Or:
Dim t As String = "INSERT INTO MusicAlbum(Album_ID, [Year], Name, Artist_ID, Company_ID) VALUES (12345, 2005, N'" & TextBox1.Text & "', 4653, 403)"
Εισαγωγή ημερομηνίας/ώρας για SQL Server
Συνήθως έχουμε τις γνώσεις σχετικά με τον πολιτισμό και τις τοπικές ρυθμίσεις της ημερομηνίας/ώρας που ερμηνεύεται μέσα στην εφαρμογή ASP.NET μας. Ωστόσο, κατά την προώθηση και τη μετακίνηση των δεδομένων ημερομηνίας/ώρας προς και από εξωτερικές προελεύσεις, υπάρχει κίνδυνος παρερμηνείας των μορφών ημερομηνίας/ώρας. Αυτό συμβαίνει επειδή δεν μπορούμε πάντα να εγγυηθούμε ότι ο πολιτισμός και οι τοπικές ρυθμίσεις της εξωτερικής πηγής θα είναι οι ίδιες όπως στην εφαρμογή μας. Σε SQL Server αυτό μπορεί να λυθεί χρησιμοποιώντας το χαρακτηριστικό "τρέχουσα γλώσσα" στη σύνδεση της σύνδεσης που δημιουργείται με τη βάση δεδομένων SQL. Μπορούμε να παρέχουμε την ίδια ρύθμιση γλώσσας στη σύνδεση όπως και η κουλτούρα στην εφαρμογή μας. Αυτό μας προστατεύει από τον κίνδυνο παρερμηνείας, επειδή SQL Server αποδέχεται και στέλνει πάντα τα δεδομένα ημερομηνίας/ώρας σε συγκατάθεση με την παραπάνω ρύθμιση.
System.Globalization namespace
Αυτός ο χώρος ονομάτων είναι ο πυρήνας της παγκοσμιοποίησης και της τοπικής προσαρμογής στο .NET Framework. Η κύρια τάξη που χρησιμοποιείται σε αυτόν το χώρο ονομάτων είναι η κλάση CultureInfo. Περιέχει πληροφορίες ειδικά για τον πολιτισμό, όπως η μορφή ημερομηνίας/ώρας, οι μορφές αριθμών, οι πληροφορίες σύγκρισης και οι πληροφορίες κειμένου. Για περισσότερες πληροφορίες σχετικά με την κλάση CultureInfo, επισκεφθείτε την ακόλουθη τοποθεσία Web του MSDN:
http://msdn2.microsoft.com/en-us/library/system.globalization.cultureinfo(vs.71).aspxCultureInfo
Ουδέτεροι πολιτισμοί έναντι συγκεκριμένων πολιτισμών
Ουδέτερος πολιτισμός είναι ένας πολιτισμός που συνδέεται με μια γλώσσα, αλλά όχι με μια συγκεκριμένη χώρα/περιοχή. Μια συγκεκριμένη κουλτούρα συσχετίζεται τόσο με μια γλώσσα όσο και με μια συγκεκριμένη χώρα/περιοχή.
Ένα παράδειγμα: Η φράση "DE" (neutral culture) είναι για τη γερμανική γλώσσα, αλλά η λέξη "de-AT" (συγκεκριμένη κουλτούρα) είναι για τη γερμανική γλώσσα, όπως εκφωνείται στην Αυστρία. Οι ουδέτερες κουλτούρες δεν μπορούν να χρησιμοποιηθούν για τη μορφοποίηση.Τρέχουσα γνώση νήματος και κουλτούρας για .NET Framework τάξεις
Όλες οι τάξεις και οι μέθοδοι στη βιβλιοθήκη .NET Framework όπου θα περιμέναμε ότι τα αποτελέσματα θα εξαρτώνται από τον πολιτισμό θα έχουν δύο ενσωματωμένες συμπεριφορές:
-
Μας επιτρέπουν να καθορίσουμε τον κώδικα κουλτούρας κατά την παροχή των ορισμάτων, έτσι ώστε το αποτέλεσμα να βασίζεται στην καθορισμένη κουλτούρα. Αυτό είναι προαιρετικό.
-
Εάν αυτό λείπει (συνήθως είναι), οι τάξεις είναι αρκετά έξυπνες για να κρατήσουν έναν έλεγχο στην ιδιότητα Thread.CurrentThread.CurrentCulture και να εργαστούν σύμφωνα με αυτό.
Μπορούμε να τροποποιήσουμε την τιμή αυτής της ιδιότητας με κώδικα που είναι παρόμοιος με τον παρακάτω:
Dim ci As CultureInfo
ci = New CultureInfo("de-AT")
Thread.CurrentThread.CurrentCulture = ci
Σε αυτό το παράδειγμα κώδικα, το "de" αντιπροσωπεύει τη γερμανική γλώσσα και το "AT" αντιπροσωπεύει την Αυστρία. Επομένως, σε αυτή την περίπτωση, το DateTime.Now(). Η μέθοδος ToString θα επιστρέψει την ημερομηνία και την ώρα με μορφή που αντιστοιχεί στον τρόπο με τον οποίο εκφράζονται η ημερομηνία και η ώρα στη γερμανική γλώσσα της Αυστρίας.
Το πλαίσιο εξασφαλίζει (ως εξής) ότι η ιδιότητα CurrentCulture είναι πάντα αρχικοποιημένη:-
Ό,τι κι αν έχει οριστεί με προγραμματισμό.
-
Σε περίπτωση που δεν έχει οριστεί ρητά από τον προγραμματιστή, η ιδιότητα επιλέγεται από τα αρχεία ρύθμισης παραμέτρων (<ετικέτα> παγκοσμιοποίησης).
-
Εάν η ιδιότητα λείπει εκεί, είναι η κουλτούρα στην οποία εκτελείται ο διακομιστής Web. Αυτή είναι συνήθως η ουδέτερη κουλτούρα που αντιστοιχεί στη γλώσσα του λειτουργικού συστήματος.
Αρχεία πόρων
Όλα τα αρχεία .resx, .resource και τα αρχεία στα οποία το χαρακτηριστικό Build Action έχει οριστεί σε Ενσωματωμένος πόρος, τα οποία προστίθενται σε ένα έργο ASP.NET στο Visual Studio .NET, μεταγλωττίζονται και ενσωματώνονται αυτόματα στη συγκρότηση εφαρμογής ως μέρος της διακήρυξης. Αυτό μπορεί ακόμη και να γίνει με μη αυτόματο τρόπο, χρησιμοποιώντας το βοηθητικό πρόγραμμα Resource File Generator (RESGEN) μέσω μιας γραμμής εντολών του Visual Studio .NET. Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία Web του MSDN:
http://msdn2.microsoft.com/en-us/library/ccec7sz1(vs.71).aspxΑυτή είναι μια γενική έννοια που ισχύει κάθε φορά που χρειάζεται να διαχειριστούμε πόρους εφαρμογών που δεν σχετίζονται με την παγκοσμιοποίηση. Ωστόσο, όταν εφαρμόζουμε την παγκοσμιοποίηση, θα πρέπει να χρησιμοποιούμε δορυφορικές συνελεύσεις.
Δορυφορικές συνελεύσεις
Οι δορυφορικές συνελεύσεις μπορούν να χρησιμοποιηθούν σε ένα ASP.NET έργο όταν βεβαιώνεστε ότι ισχύει το εξής:
-
Όλα τα στοιχεία του περιβάλλοντος εργασίας χρήστη σε όλα τα αρχεία aspx πρέπει να είναι εξοπλισμένα με χαρακτηριστικά αναγνωριστικού και runat=διακομιστή.
-
Δημιουργούμε ξεχωριστά αρχεία .resx. Ο καθένας πρέπει να αντιστοιχεί σε κάθε πολιτισμό που θέλουμε να υποστηρίξει η αίτησή μας.
-
Πρέπει να αποφασίσουμε ένα κοινό όνομα για όλα αυτά τα αρχεία για πρώην. "Συμβολοσειρές".
-
Ονομάζουμε τα ξεχωριστά αρχεία .resx με το ακόλουθο naming convention commonfirstname. languagecode-regioncode.resx (για παράδειγμα: Strings.de-AT.resx, Strings.en-GB.resx ).
-
Θα πρέπει να υπάρχει το αρχείο
πόρουcommonfirstname.resx (Strings.resx) που έχει όλες τις συμβολοσειρές όπως θέλετε να εμφανίζονται στην προεπιλεγμένη περίπτωση. -
Γράψτε κώδικα για να εντοπίσετε την κουλτούρα του χρήστη και ορίστε την ιδιότητα Thread.CurrentThread.CurrentUICulture ώστε να ταιριάζει με αυτήν.
-
Γράψτε κώδικα για να φορτώσετε τους πόρους χρησιμοποιώντας την κλάση ResourceManager.
-
Γράψτε κώδικα για να εξαγάγετε συμβολοσειρές από το φορτωμένο αντικείμενο και αντιστοιχίστε τις σε στοιχεία του περιβάλλοντος εργασίας χρήστη.
Όταν έχετε εκτελέσει αυτά τα βήματα, η Visual Studio.NET θα μεταγλωττίσει το strings.resx και θα το ενσωματώσει στη συναρμολόγηση της εφαρμογής (MyGlobalizationTestProjectName.dll). Ωστόσο, για όλα τα άλλα αρχεία .resx, δημιουργεί ξεχωριστά αρχεία dll που δεν έχουν εκτελέσιμο κώδικα αλλά μόνο δεδομένα πόρων. Αυτά στην πραγματικότητα ονομάζονται δορυφορικές συνελεύσεις. Επίσης, το Visual Studio .NET τις τοποθετεί σε δομή φακέλων παρόμοια με την ακόλουθη:MyGlobalizationTestProjectName
|------- θέση αποθήκευσης |------εν-Η.Π.Α. MyGlobalizationTestProjectName.resources.dll |------ja-JP MyGlobalizationTestProjectName.resources.dll |------de-AT MyGlobalizationTestProjectName.resources.dllΔιαφορά μεταξύ CurrentCulture και CurrentUICulture
Ενώ οι μέθοδοι των τάξεων στο χώρο ονομάτων System.Globalization εξαρτώνται από την ιδιότητα Thread.CurrentThread.CurrentCulture για να δώσουν την παραγωγή τους, η κλάση ResourceManager που φορτώνει τη συγκρότηση πόρων εξαρτάται από την ιδιότητα Thread.CurrentThread.CurrentUICulture για τη φόρτωση της κατάλληλης δορυφορικής συναρμολόγησης. Ακολουθεί ένα παράδειγμα κώδικα C#:
using System.Globalization;
using System.Threading;
using System.Resources;
//Load resources.
protected ResourceManager gStrings = new ResourceManager("MyGlobalizationTestProjectName.strings", typeof(MyTestWebFormName).Assembly);
// Get the user's preferred language.
string sLang = Request.UserLanguages[0];
// Set the thread's culture for formatting, comparisons, etc.
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(sLang);
// Set the thread's UICulture to load resources
// from satellite assembly.
Thread.CurrentThread.CurrentUICulture = new CultureInfo(sLang);
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
// Get strings from resource file and assign to UI elements.
head1.InnerHtml = gStrings.GetString("satellite.head1");
p1.InnerHtml = gStrings.GetString("satellite.p1");
sp1.InnerHtml = gStrings.GetString("satellite.sp1");
sp2.InnerHtml = gStrings.GetString("satellite.sp2");
butOK.Text = gStrings.GetString("satellite.butOK");
butCancel.Value = gStrings.GetString("satellite.butCancel");
}
}
Σειρά με την οποία ASP.NET επιλέγει δορυφορικές συνελεύσεις:
Όταν έχετε ορίσει την CurrentUICulture του νήματος, ASP.NET επιλέγει αυτόματα τους πόρους που ταιριάζουν, με την εξής σειρά:
-
Εάν βρεθεί δορυφορική συναρμολόγηση με αντίστοιχη κουλτούρα, χρησιμοποιούνται οι πόροι από αυτή τη συναρμολόγηση.
-
Εάν βρεθεί δορυφορική συναρμολόγηση με ουδέτερη κουλτούρα που να ταιριάζει με την CurrentUICulture, χρησιμοποιούνται πόροι από αυτή τη συναρμολόγηση.
-
Εάν δεν βρεθεί αντιστοιχία για το CurrentUICulture, χρησιμοποιούνται οι εναλλακτικοί πόροι που είναι αποθηκευμένοι στην εκτελέσιμη συγκρότηση.
Σημείωση Αυτό βασίζεται στη γενικότερη διαδικασία επαναφοράς πόρων. Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία Web του MSDN:
http://msdn2.microsoft.com/en-us/library/sb6a8618(vs.71).aspx
Μη αυτόματη δημιουργία δορυφορικών συνελεύσεων:
Αυτή η χρήση δορυφορικών συνελεύσεων είναι το σημείο όπου το Visual Studio .NET δημιουργεί τις καθεαυτές τις συνελεύσεις. Ωστόσο, το Visual Studio .NET δεν υποστηρίζει ισχυρές δορυφορικές συνελεύσεις ονομάτων από προεπιλογή. Εάν θέλετε να αλλάξετε αυτές τις επιλογές, θα πρέπει να δημιουργήσετε δορυφορικές συνελεύσεις με μη αυτόματο τρόπο. Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία Web του MSDN:
http://msdn2.microsoft.com/en-us/library/21a15yht(vs.71).aspx .
Τι συμβαίνει με ASP.NET 2,0 στο μέτωπο της παγκοσμιοποίησης;
Η ευρεία χρήση των ASP.NET και τα είδη των θεμάτων που θα βλέπαμε σε σχέση με τις δυνατότητες παγκοσμιοποίησης στο ASP.NET 2.0 εξακολουθούν να βρίσκονται σε κάποια απόσταση μπροστά. Ωστόσο, θα ήταν καλό να ρίξουμε μια σύντομη ματιά στην κατεύθυνση προς την οποία κατευθύνεται η μεθοδολογία παγκοσμιοποίησης για εφαρμογές web.
Η υποστήριξη της παγκοσμιοποίησης στο ASP.NET 2.0 έχει υποστεί ριζική αλλαγή και οι προγραμματιστές Web έχουν τη δυνατότητα να κάνουν την τοπική προσαρμογή των εφαρμογών Web τόσο εύκολη όσο και για τις εφαρμογές που βασίζονται στα Windows. Ακολουθεί μια λίστα με δυνατότητες που αποτελούν τα θεμέλια της μεθοδολογίας παγκοσμιοποίησης στο ASP.NET 2.0: Πόροι με έντονη πληκτρολόγηση Στον πυρήνα της κυκλοφορίας του .NET Framework 2.0 παρέχεται υποστήριξη για πόρους με έντονη πληκτρολόγηση που παρέχουν στους προγραμματιστές Intellisense και απλοποιούν τον κώδικα που απαιτείται για την πρόσβαση σε πόρους κατά το χρόνο εκτέλεσης. Το Managed Resource Editor Visual Studio .NET 2.0 περιλαμβάνει ένα νέο πρόγραμμα επεξεργασίας πόρων με καλύτερη υποστήριξη για τη δημιουργία και τη διαχείριση καταχωρήσεων πόρων, όπως συμβολοσειρές, εικόνες, εξωτερικά αρχεία και άλλους σύνθετους τύπους. Η δημιουργία πόρων για φόρμες Web Φόρμες των Windows προγραμματιστές έχουν ήδη απολαύσει τα οφέλη της αυτόματης διεθνοποίησης. Το Visual Studio .NET 2005 θα υποστηρίζει πλέον την ταχεία διεθνοποίηση, δημιουργώντας αυτόματα πόρους για φόρμες Web, στοιχεία ελέγχου χρήστη και κύριες σελίδες. Βελτιωμένη υποστήριξη χρόνου εκτέλεσης Οι παρουσίες ResourceManager διαχειρίζονται από το χρόνο εκτέλεσης και είναι εύκολα προσβάσιμες σε κώδικα διακομιστή μέσω πιο προσβάσιμων διασυνδέσεων προγραμματισμού. Παραστάσεις τοπικής προσαρμογής Οι σύγχρονες δηλωτικές παραστάσεις για ιστοσελίδες υποστηρίζουν την αντιστοίχιση καταχωρήσεων πόρων σε ιδιότητες ελέγχου, ιδιότητες HTML ή περιοχές στατικού περιεχομένου. Αυτές οι παραστάσεις είναι επίσης επεκτάσιμες, παρέχοντας πρόσθετους τρόπους ελέγχου της διαδικασίας επισύναψης μεταφρασμένου περιεχομένου σε έξοδο HTML. Αυτόματη επιλογή κουλτούρας Η διαχείριση επιλογής κουλτούρας για κάθε αίτηση Web μπορεί να συνδεθεί αυτόματα με τις προτιμήσεις του προγράμματος περιήγησης. Μοντέλο υπηρεσίας παροχής πόρων Ένα νέο μοντέλο υπηρεσίας παροχής πόρων επιτρέπει στους προγραμματιστές να φιλοξενούν πόρους σε εναλλακτικές προελεύσεις δεδομένων, όπως επίπεδα αρχεία και πίνακες βάσεων δεδομένων, ενώ το μοντέλο προγραμματισμού για την πρόσβαση σε αυτούς τους πόρους παραμένει συνεπές. Για περισσότερες πληροφορίες σχετικά με τη μεθοδολογία παγκοσμιοποίησης στο ASP.NET 2.0, επισκεφθείτε την ακόλουθη τοποθεσία Web του MSDN:ASP.NET 2.0 Δυνατότητες τοπικής προσαρμογής: Μια νέα προσέγγιση στην τοπική προσαρμογή εφαρμογώνhttp://msdn2.microsoft.com/en-us/library/ms379546(VS.80).aspx
WebΣυμπέρασμα
Αυτά προς το παρόν αφορούν θέματα παγκοσμιοποίησης στο ASP και το ASP.NET. Ελπίζω ότι αυτό το άρθρο θα βοηθήσει μερικούς πελάτες να επιλύσουν τα προβλήματα παγκοσμιοποίησης στο ASP και ASP.NET προτού επιλέξουν να επικοινωνήσουν με την Υποστήριξη της Microsoft. Θα τελειώσω με την ακόλουθη σκέψη:
"Όπου και όποτε αναπτύσσετε, σκεφτείτε τα εκατομμύρια των ανθρώπων που μπορείτε να ενδυναμώσετε σε όλο τον κόσμο. Κάντε τις λύσεις σας έτοιμες για όλο τον κόσμο! Τα εργαλεία και οι τεχνολογίες της Microsoft διευκολύνουν τη διεθνοποίηση." Θα τα ξαναφτιάξουμε τον επόμενο μήνα με ένα άλλο ενδιαφέρον θέμα. Σας ευχαριστούμε για το χρόνο σας.Για περισσότερες πληροφορίες σχετικά με ζητήματα παγκοσμιοποίησης στο ASP και το ASP.NET, ανατρέξτε στις ακόλουθες τοποθεσίες Web της Microsoft:
SetLocale και GetLocale σεhttp://msdn2.microsoft.com/en-us/library/5xf99h19.aspx vbscript
Http://msdn.microsoft.com/en-us/goglobal/bb688110 παγκοσμιοποίησης βήμαπρος βήμα
Go Global: Localizing Dynamic Web Apps with IIS 5.0 and SQL Serverhttp://msdn.microsoft.com/msdnmag/issues/01/05/global/default.aspx
Go Global: Designing Your ASP-based Web Site to Support Globalizationhttp://msdn.microsoft.com/msdnmag/issues/0700/localize/default.aspx
315616 πώς μπορείτε να εντοπίσετε μια γλώσσα προγράμματος-πελάτη σε μια σελίδα ενεργών σελίδων διακομιστή στοhttp://support.microsoft.com/?id=315616 IIS
Γράφημαhttp://msdn2.microsoft.com/en-us/library/0h88fahh.aspx
αναγνωριστικού τοπικών ρυθμίσεων (LCID)System.Globalization Namespacehttp://msdn2.microsoft.com/en-us/library/system.globalization(vs.71).aspx
Πόροι και τοπική προσαρμογή Με χρήση του .NET Framework SDKhttp://msdn2.microsoft.com/en-us/library/aa309421(VS.71).aspx
Πόροι σε εφαρμογέςASP.NET http://msdn2.microsoft.com/en-us/library/1ztca10y(vs.71).aspx
ASP.NET <την παγκοσμιοποίηση> στοιχείορύθμισης παραμέτρων http://msdn2.microsoft.com/en-us/library/hy4kkhe0(vs.71).aspx
Οδηγίες σχεδίασης και υλοποίησης για προγράμματα-πελάτες Web -Http://msdn2.microsoft.com/en-us/library/ms978628.aspx παγκοσμιοποίησης και τοπικής προσαρμογής
Επίσημη τοποθεσία της Microsoft – Πύλη παγκόσμιας ανάπτυξης και υπολογιστώνhttp://msdn.microsoft.com/en-us/goglobal/bb688096
Ανάπτυξη εφαρμογών έτοιμωνhttp://msdn2.microsoft.com/en-us/library/h6270d0z(vs.71).aspx
για τον κόσμοΑρχιτεκτονική παγκοσμιοποίησης για ASP.NEThttp://msdn2.microsoft.com/en-us/library/aa478974.aspx
Κιτ εργαλείων τοπικής προσαρμογής για μεγάλες επιχειρήσεις - Για την ανάπτυξη μεταφρασμένων εφαρμογώνhttp://msdn2.microsoft.com/en-us/library/aa479334.aspx
του Microsoft ASP.NETHttp://www.microsoft.com/typography/default.mspx τυπογραφίας της Microsoft
Γλωσσάριο
ANSI σημαίνει Αμερικανικό Ινστιτούτο Εθνικών Προτύπων. Σε αυτό το περιβάλλον, αντιπροσωπεύει μια συγκεκριμένη κωδικοσελίδα για ένα συγκεκριμένο σύνολο γλωσσών/χαρακτήρων. Συνήθως αναφέρεται στην αγγλική κωδικοσελίδα (windows-1252).
Συνδυασμός κωδικοποίησης ASCII A 1 byte (ή 7 bit). Μόνο οι χαρακτήρες στην περιοχή 0-127 είναι τυποποιημένοι. Το εύρος 128-255 είναι επεκτάσεις στο ASCII και όχι μέρος του προτύπου. Ένα παράδειγμα είναι η διαφορά μεταξύ της ανώτερης περιοχής του γραφήματος OEM ASCII και του γραφήματος VB ASCII. Η ρύθμιση CharSet χρησιμοποιείται κυρίως για τον Internet Explorer και τα προγράμματα περιήγησης που υποδεικνύει στο πρόγραμμα περιήγησης πώς να ερμηνεύει τα δεδομένα χαρακτήρων. Παράδειγμα: Response.charSet = "iso-8859-1". Codepage Ένας πίνακας μετατροπής που καθορίζει τον τρόπο κωδικοποίησης των χαρακτήρων (χρησιμοποιείται συνήθως για διακομιστές). Η παγκοσμιοποίηση παγκοσμιοποίηση είναι μια διαδικασία σχεδίασης και δημιουργίας μιας εφαρμογής, έτσι ώστε να πληρούνται οι μοναδικές απαιτήσεις ενός πολιτισμού, περιοχής ή εθνικής/περιφερειακής και γλωσσικής ανάγκης. Με άλλα λόγια, η σχεδίαση μιας εφαρμογής με τρόπο που μπορεί να μεταφραστεί αργότερα είναι η παγκοσμιοποίηση. Μορφές/προτιμήσεις γλώσσας/κουλτούρας και περιοχής, όπως μορφές ημερομηνίας και ημερολογίου, μορφές ώρας, μορφές νομισματικής μονάδας, πεζά/πεζά, ταξινόμηση και σύγκριση συμβολοσειρών, μορφές διευθύνσεων, μορφές αριθμών τηλεφώνου, μεγέθη χαρτιού, μονάδα μέτρησης, κατεύθυνση γραφής κ.λπ. LocaleID (LCID) Μια τιμή DWORD που καθορίζει το αναγνωριστικό γλώσσας και το αναγνωριστικό ταξινόμησης. Μπορεί να χρησιμοποιηθεί για να καθορίσετε τις μορφές συγκεκριμένης περιοχής για πρώην ημερομηνία/ώρα κ.λπ. πρέπει να μορφοποιηθεί σύμφωνα με. Δυνατότητα τοπικής προσαρμογής μιας εφαρμογής για την παρουσίαση περιεχομένου για τη γλώσσα/τοπικές ρυθμίσεις που απαιτείται. Η τοπική προσαρμογή είναι η διαδικασία μετάφρασης ενός περιβάλλοντος εργασίας χρήστη σε συγκεκριμένες γλώσσες ή/και τοπικές ρυθμίσεις. Σύνολο χαρακτήρων πολλών byte Ένα σύνολο χαρακτήρων στο οποίο οι χαρακτήρες αποτελούνται από δύο ή περισσότερα byte, όπως τα Ιαπωνικά. UtF-8 εμπίπτει επίσης σε αυτή την κατηγορία. (Το Unicode ανήκει τεχνικά σε αυτή την κατηγορία, αλλά στα Windows, έχει τη δική του κατηγορία.) Unicode Ένας συνδυασμός κωδικοποίησης 2 byte. Τα Windows χρησιμοποιούν Unicode εσωτερικά. Τα API ειδικά για το Unicode έχουν την ένδειξη "W" στο τέλος του ονόματος της συνάρτησης. Επίσης γνωστό ως wide char; δεν μπορούν να χρησιμοποιηθούν απευθείας από εφαρμογές Web. UTF-8 Μια κωδικοποίηση χαρακτήρων όπου ένας χαρακτήρας μπορεί να αντιπροσωπεύεται από 1-6 byte. Στα Windows, η περιοχή είναι 1-3 byte. Δεν υποστηρίζεται στην περιοχή NT4 για εφαρμογές Web. Ευρύ σύνολο χαρακτήρων Ένα ψευδώνυμο για Unicode. Επίσης γνωστό ως DBCS (σύνολο χαρακτήρων διπλού byte), UCS-2, UTF-16.Όπως πάντα, μην διστάσετε να υποβάλετε ιδέες για θέματα που θέλετε να αντιμετωπιστούν σε μελλοντικές στήλες ή στη Γνωσιακή βάση, χρησιμοποιώντας τη φόρμα Ask For It.