ΕΠΙΔΙΌΡΘΩΣΗ: Κατεξοχήν συμβολοσειρά είναι παρερμηνευθούν από το πρόγραμμα μεταγλώττισης Visual C++ στο Visual Studio 2008 Service Pack 1 όταν η κατεξοχήν χρήση κωδικοποίησης UTF-8 και περιέχει ασιατικούς χαρακτήρες


Συμπτώματα


Εξετάστε το ακόλουθο σενάριο:
  • Μπορείτε να δημιουργήσετε ένα έργο Visual C++ στο Microsoft Visual Studio 2008 Service Pack 1 (SP1).
  • Ένα αρχείο του έργου έχει στενό συμβολοσειρές κειμένου. Αυτές οι συμβολοσειρές κειμένου που περιέχει ασιατικούς χαρακτήρες και δεν έχουν το πρόθεμα με το γράμμα "Λ."
  • Το κατεξοχήν συμβολοσειρά χρησιμοποιούν κωδικοποίηση UTF-8.
Σε αυτό το σενάριο, όταν μεταγλωττίσετε το έργο, η κατεξοχήν συμβολοσειρά είναι παρερμηνευθούν από το πρόγραμμα μεταγλώττισης. Επιπλέον, αντιμετωπίζετε ένα από τα ακόλουθα ζητήματα:
  • Η λειτουργία της μεταγλώττισης επιτύχει. Ωστόσο, η κατεξοχήν συμβολοσειρά δεν εμφανίζονται σωστά στην εφαρμογή που δημιουργήθηκε. Επιπλέον, ενδέχεται επίσης να λάβετε τα ακόλουθα προειδοποιητικά μηνύματα, όταν μεταγλωττίσετε το έργο:
    Προειδοποίηση C4566: χαρακτήρας αντιπροσωπεύεται από την παγκόσμια-χαρακτήρας-name 'xx' δεν μπορεί να αναπαρασταθεί στην τρέχουσα κωδικοσελίδα.
  • Η λειτουργία της μεταγλώττισης αποτυγχάνει. Επιπλέον, ενδέχεται να λάβετε το ακόλουθο μήνυμα λάθους, όταν μεταγλωττίσετε το έργο:
    Σφάλμα C2078: πάρα πολλές προετοιμασίες

Αιτία


Αυτό το ζήτημα παρουσιάζεται επειδή το πρόγραμμα μεταγλώττισης υποθέτει ότι το αρχείο στην ενότητα "Συμπτώματα" έχει κωδικοποίηση MBCS. Εξαιτίας αυτής της συμπεριφοράς, η compilerincorrectly μετατρέπει το αρχείο.

Προτεινόμενη αντιμετώπιση


Πληροφορίες άμεσης επιδιόρθωσης

Μια υποστηριζόμενη άμεση επιδιόρθωση είναι διαθέσιμη από τη Microsoft. Ωστόσο, αυτή η άμεση επιδιόρθωση προορίζεται για τη διόρθωση μόνο του προβλήματος που περιγράφεται σε αυτό το άρθρο. Εφαρμόστε αυτήν την άμεση επιδιόρθωση μόνο σε συστήματα που αντιμετωπίζουν το συγκεκριμένο πρόβλημα.

Εάν η άμεση επιδιόρθωση είναι διαθέσιμη για λήψη, τότε υπάρχει μια ενότητα με τίτλο "Διαθέσιμη λήψη άμεσης επιδιόρθωσης" στην αρχή αυτού του άρθρου της Γνωσιακής βάσης. Εάν αυτή η ενότητα δεν εμφανίζεται, υποβάλετε μια αίτηση στο τμήμα Εξυπηρέτησης και υποστήριξης πελατών της Microsoft για να αποκτήσετε την άμεση επιδιόρθωση.

Σημείωση Εάν προκύψουν πρόσθετα ζητήματα ή απαιτείται αντιμετώπιση προβλημάτων, ίσως χρειαστεί να δημιουργήσετε ξεχωριστή αίτηση εξυπηρέτησης. Για πρόσθετες ερωτήσεις υποστήριξης και θέματα που δεν αφορούν τη συγκεκριμένη άμεση επιδιόρθωση, ισχύουν οι συνηθισμένες χρεώσεις υποστήριξης. Για μια πλήρη λίστα αριθμών τηλεφώνου υποστήριξης και εξυπηρέτησης πελατών της Microsoft ή για να δημιουργήσετε ξεχωριστή αίτηση εξυπηρέτησης, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:Σημείωση Η φόρμα "Διαθέσιμη λήψη άμεσης επιδιόρθωσης" εμφανίζει τις γλώσσες για τις οποίες είναι διαθέσιμη η άμεση επιδιόρθωση. Εάν η γλώσσα σας δεν εμφανίζεται, τότε η άμεση επιδιόρθωση δεν είναι διαθέσιμη για αυτήν τη γλώσσα.

Προϋποθέσεις

Πρέπει να έχετε το Visual Studio 2008 Service Pack 1 (SP1) εγκατεστημένο για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση.

Απαίτηση επανεκκίνησης

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

Πληροφορίες αντικατάστασης άμεσης επιδιόρθωσης

Αυτή η επείγουσα επιδιόρθωση δεν αντικαθιστά άλλες επείγουσες επιδιορθώσεις.

Πληροφορίες αρχείων

Η αγγλική έκδοση αυτής της άμεσης επιδιόρθωσης έχει τα χαρακτηριστικά αρχείου (ή νεότερα χαρακτηριστικά αρχείου) που παρατίθενται στον παρακάτω πίνακα. Οι ημερομηνίες και οι ώρες για τα αρχεία αυτά αναφέρονται σε Συντονισμένη παγκόσμια ώρα (UTC). Όταν προβάλλετε τις πληροφορίες του αρχείου, μετατρέπεται σε τοπική ώρα. Για να βρείτε τη διαφορά μεταξύ της ώρας UTC και της τοπικής ώρας, χρησιμοποιήστε την καρτέλα Zώνη ώρας στο στοιχείο Hμερομηνία και ώρα " στον πίνακα ελέγχου.
Όνομα αρχείουΈκδοση αρχείουΜέγεθος αρχείουΗμ/νίαΏραΠλατφόρμα
C1.dll15.0.30729.4987678,72009-Mar-201010:18x86
C1xx.dll15.0.30729.49872,204,48809-Mar-201010:18x86
C1xx.dll15.0.30729.49872,215,24009-Mar-201010:18x86
C1xx.dll15.0.30729.49872,339,65609-Mar-201010:18x86
C1xx.dll15.0.30729.49872,505,55209-Mar-201010:18x86
C1xx.dll15.0.30729.49872,891,59209-Mar-201010:18x64

Κατάσταση


Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα των προϊόντων της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".

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


Για να επιλύσετε το σφάλμα στο πρόγραμμα μεταγλώττισης, εγκαταστήστε αυτήν την επείγουσα επιδιόρθωση και, στη συνέχεια, αποθηκεύστε το αρχείο με ένα σημάδι σειρά byte. Επιπλέον, μπορείτε να προσθέσετε την παρακάτω οδηγία "pragma" πριν από τις συμβολοσειρές κειμένου στο αρχείο προέλευσης.

#pragma execution_character_set("utf-8")
Σημείωση Η οδηγία "pragma" ορίζει τη μονάδα μετάφρασης του αρχείου προέλευσης μέχρι την οδηγία "pragma" αντικαθίσταται από άλλη κοινοτική οδηγία "pragma".