Αναγν. άρθρου: 239530 - Τελευταία αναθεώρηση: Κυριακή, 19 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0

Πρέπει να προηγείται όλων των συμβολοσειρών Unicode με ένα πρόθεμα N, όταν χειρίζεστε σταθερές συμβολοσειράς Unicode στον SQL Server

Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.
Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Κατά το χειρισμό σταθερές συμβολοσειράς Unicode στον SQL Server πρέπει να προηγείται όλων των συμβολοσειρών Unicode με κεφαλαίο το πρώτο γράμμα N, όπως τεκμηριώνεται στο θέμα "Χρήση δεδομένων Unicode" ηλεκτρονικά βιβλία SQL Server Books Online. Το πρόθεμα "N" αντιστοιχεί σε εθνική γλώσσα με το SQL-92 και πρέπει να είναι κεφαλαίοι. Εάν δεν τοποθετήσετε ως πρόθεμα μια σταθερά συμβολοσειράς Unicode με N, SQL Server θα μετατρέψετε την κωδικοσελίδα που δεν είναι Unicode από την τρέχουσα βάση δεδομένων πριν να χρησιμοποιεί τη συμβολοσειρά.

Περισσότερες πληροφορίες

Σημείωση Αυτή είναι απαραίτητο να παρέχουν συμβατότητα με υπάρχουσες εφαρμογές. Για παράδειγμα, "SELECT"Hello"" πρέπει να συνεχίσουν να επιστρέψει μια συμβολοσειρά που δεν είναι Unicode, επειδή πολλές εφαρμογές θα περιμένατε τη συμπεριφορά του SQL Server 6.5, το οποίο δεν υποστηρίζει δεδομένα Unicode, τη νέα σύνταξη "SELECT N'Hello '" έχει προστεθεί για να επιτρέπει τη διέλευση των συμβολοσειρών Unicode προς και από τον SQL Server 7.0.

Κάθε φορά που μεταβιβάζουν δεδομένα Unicode σε SQL Server πρέπει να τοποθετήσετε ως πρόθεμα Unicode συμβολοσειρά με N. Εάν η εφαρμογή σας έχει δυνατότητα Unicode και στέλνει δεδομένα σε SQL Server 7.0 ως σταθερές συμβολοσειράς Unicode χωρίς το πρόθεμα N, ενδέχεται να αντιμετωπίσετε απώλεια δεδομένων χαρακτήρων. Όταν θα χαθούν SQL Server μετατρέπει μια συμβολοσειρά Unicode χωρίς Ν το πρόθεμα Unicode στην κωδικοσελίδα της βάσης δεδομένων του SQL Server, σε οποιουσδήποτε χαρακτήρες στη συμβολοσειρά Unicode που δεν υπάρχουν στην κωδικοσελίδα του διακομιστή SQL. Σημειώστε ότι αυτή η μετάφραση δεν σχετίζεται με Autotranslation, OemToAnsi ή AutoAnsiToOem μετατροπής, οι οποίες παρουσιάζονται στον υπολογιστή-πελάτη στο επίπεδο ODBC, OLEDB ή βιβλιοθήκης ΒΔ.

Εάν η εφαρμογή σας δεν αποστέλλει δεδομένα Unicode σε SQL Server και το πρόγραμμα-πελάτης ANSI κωδικοσελίδα ταιριάζει με την κωδικοσελίδα του διακομιστή SQL, δεν χρειάζεται να πρόθεμα σταθερές συμβολοσειρών με Ό και δεν θα αντιμετωπίσετε απώλεια δεδομένων λόγω της παραλείποντας το πρόθεμα. Ωστόσο, SQL Server 7.0 σας επιτρέπει να επιλέξετε μια συρραφή Unicode κατά την εγκατάσταση, η οποία είναι ξεχωριστή από τη σειρά ταξινόμησης και σε ορισμένες περιπτώσεις αυτό μπορεί να προκαλέσει λειτουργίες που αφορούν το πρόθεμα με N για να έχετε διαφορετικά αποτελέσματα από εκείνα που δεν έχουν το πρόθεμα συμβολοσειρές. Για παράδειγμα, ας υποθέσουμε ότι, κατά την εγκατάσταση του SQL Server 7.0, έχετε επιλέξει δυαδική ταξινόμηση (sort εντολές που χρησιμοποιούνται κατά τη σύγκριση συμβολοσειρών μη Unicode), και επιλέξατε γενικής Unicode ως τη συρραφή Unicode (τη συρραφή Unicode χρησιμοποιείται για τη σύγκριση Unicode ακολουθίες χαρακτήρων). Η παράσταση που συγκρίνει δύο συμβολοσειρές που δεν είναι Unicode ("ABC" = "ΑΒΓ") θα επιστρέψει την τιμή False από ένα κεφαλαίο γράμμα "A" δεν είναι ισοδύναμο με μια lower-case "a" σύμφωνα με μια σειρά ταξινόμησης δυαδικό. Σε αντίθεση, η έκφραση (N'ABC '= N'abc') θα επιστρέψει την τιμή True. Επειδή οι συμβολοσειρές έχουν το πρόθεμα με ένα N, θα μετατραπούν σε Unicode και τη συρραφή Unicode που θα χρησιμοποιηθεί για να συγκρίνετε τους. Σε αντίθεση με τη δυαδική ταξινόμηση, τη συρραφή Unicode Γενικά είναι διάκριση καταργείται και θα θεωρήσει δύο συμβολοσειρές ως ισοδύναμες.

Σημειώστε ότι εάν ένα από δύο τελεστέοι σταθερά συμβολοσειράς είναι το πρόθεμα με ένα N και το άλλο δεν έχει, η συμβολοσειρά που δεν είναι Unicode θα μετατραπούν σε Unicode και η συρραφή θα ισχύει κατά τη σύγκριση τους Unicode. Η συμπεριφορά αυτή εξηγείται η πρόταση SQL Server Books Online θέμα "Τελεστές σύγκρισης".

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Λέξεις-κλειδιά: 
kbinfo kbmt KB239530 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:239530  (http://support.microsoft.com/kb/239530/en-us/ )