Objawy

Rozważ następujący scenariusz:

  • Utwórz projekt języka Visual C++ w Microsoft Visual Studio 2008 z dodatkiem Service Pack 1 (SP1).

  • Plik w projekcie ma wąskie literały. Literały te zawierają znaki azjatyckie i nie są poprzedzone literą "L".

  • Literały ciągów znaków Użyj kodowania UTF-8.

W tym scenariuszu podczas kompilowania projektu, literały ciągów znaków są błędnie interpretowane przez kompilator. Ponadto pojawić się jeden z następujących problemów:

  • Operacja kompilacji zakończy się pomyślnie. Jednakże literały ciągów znaków są wyświetlane niepoprawnie w generowanych aplikacji. Ponadto może także pojawić następujące komunikaty ostrzegawcze podczas kompilowania projektu:

    Ostrzeżenie C4566: znak reprezentowany przez uniwersalny charakter nazwę 'xx' nie można przedstawić w bieżącej strony kodowej.

  • Operacja kompilacji nie powiedzie się. Ponadto podczas kompilowania projektu może zostać wyświetlony następujący komunikat o błędzie:

    Błąd C2078: zbyt wiele inicjatory

Przyczyna

Ten problem występuje, ponieważ kompilator zakłada, że plik w sekcji "Symptomy" ma kodowania MBCS. Z tego powodu compilerincorrectly tłumaczy pliku.

Rozwiązanie

Informacje o poprawce

Obsługiwana poprawka jest udostępniana przez firmę Microsoft. Jednak ta poprawka jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Tylko w systemach, których dotyczy ten problem, należy zastosować tę poprawkę.

Jeśli poprawka jest dostępna do pobrania, pojawi się sekcja "Poprawka dostępna do pobrania" na początku tego artykułu z bazy wiedzy Knowledge Base. Jeśli nie ma tej sekcji, należy przesłać żądanie do centrum obsługi klienta firmy Microsoft i obsługi technicznej w celu uzyskania poprawki.

Uwaga Jeśli wystąpią dodatkowe błędy lub konieczność rozwiązania problemu, być może trzeba będzie utworzyć osobne zlecenie usługi. Zwykłe koszty obsługi będą zastosowane do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej poprawki. Aby uzyskać pełną listę numerów telefonów pomocy technicznej i obsługi klienta firmy Microsoft lub utworzyć osobne zlecenie usługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:

http://support.microsoft.com/contactus/?ws=supportUwaga "Poprawka dostępna do pobrania" zawiera listę języków, dla których dostępna jest poprawka. Jeśli odpowiedni język nie jest widoczny, to dlatego, że poprawka nie jest dostępna dla danego języka.

Wymagania wstępne

Musi mieć Visual Studio 2008 z dodatkiem Service Pack 1 (SP1) zainstalować tę poprawkę.

Wymagania dotyczące ponownego uruchomienia

Nie trzeba ponownie uruchomić komputer po zastosowaniu tej poprawki, jeśli jest używane żadne wystąpienie programu Visual Studio.

Informacje dotyczące zastępowania poprawek

Ta poprawka nie zastępuje inne poprawki.

Informacje o plikach

Wersja anglojęzyczna tej poprawki ma atrybuty plików (lub nowsze) wymienione w poniższej tabeli. Daty i godziny odpowiadające tym plikom zostały podane w formacie uniwersalnego czasu koordynowanego (UTC, Coordinated Universal Time). Po wyświetleniu informacji o pliku są konwertowane na czas lokalny. Aby zobaczyć różnicę między czasem UTC i czasem lokalnym, należy użyć z karty Strefa czasowa w aplecie Data i godzina w Panelu sterowania.

Nazwa pliku

Wersja pliku

Rozmiar pliku

Data

Godzina

Platforma

C1.dll

15.0.30729.4987

678,720

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,204,488

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,215,240

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,339,656

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,505,552

09-Mar-2010

10:18

x86

C1xx.dll

15.0.30729.4987

2,891,592

09-Mar-2010

10:18

x64

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Więcej informacji

Aby rozwiązać błąd kompilatora, należy zainstalować tę poprawkę, a następnie zapisz plik wraz z znacznik kolejności bajtów. Ponadto należy dodać następującą dyrektywę "pragmy" tuż przed literały ciągów znaków w pliku źródłowym.

#pragma execution_character_set("utf-8")

Uwaga Dyrektywa "pragmy" ustawia jednostki tłumaczenia dla pliku źródłowego, aż dyrektywa "pragmy" zastępuje się wyrazami dyrektywa "pragmy" innego.

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Jak zadowalająca jest jakość tłumaczenia?

Co wpłynęło na Twoje wrażenia?

Czy chcesz przekazać jakieś inne uwagi? (Opcjonalnie)

Dziękujemy za opinię!

×