Microsoft Visual Studio 2008 wersję tego artykułu zobacz 980263.
Symptomy
Rozpatrzmy następujący scenariusz:
-
Utwórz projekt języka Visual C++ w programie Microsoft Visual Studio 2010.
-
Plik w projekcie inicjuje wąskie literały. Literały te zawierają znaki azjatyckie i nie są poprzedzone literą "L".
-
Plik został zapisany przy użyciu 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:
-
Jeśli plik zawiera znacznik porządku bajtów (BOM), operacja kompilacji zakończy się pomyślnie. Jednakże literały ciągów znaków są nadal wyświetlane niepoprawnie w generowanych aplikacji. Ponadto podczas kompilowania projektu może zostać wyświetlony następujący komunikat ostrzegawczy:
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
-
Operacja kompilacji nie powiedzie się. Ponadto podczas kompilowania projektu może zostać wyświetlony następujący komunikat ostrzegawczy:
Ostrzeżenie C4129: 'znak': Nierozpoznana sekwencja znaków.
Przyczyna
Ten problem występuje, ponieważ kompilator zakłada, że literały w pliku może być interpretowana jako bajt wiodący kodowania MBCS zamiast pojedynczych bajtów Unicode. Z powodu tego problemu kompilator niepoprawnie przetwarza plik.
Rozwiązanie
Aby rozwiązać ten problem, należy zastosować tę poprawkę, na komputerze, na którym skompilować projekt. Następnie zapisz plik wraz z znacznik kolejności bajtów, a następnie dodaj 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 Niniejsza dyrektywa "pragmy" Określa jednostki tłumaczenia dla pliku źródłowego, aż do niniejszej dyrektywy "pragmy" zastępuje się wyrazami dyrektywa "pragmy" innego.
Więcej informacji na temat tej poprawki
Informacje o poprawce
Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak jest ona przeznaczona do usunięcia tylko problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następny, zawierający tę poprawkę. Aby natychmiast rozwiązać ten problem, skontaktuj się z biurem obsługi klienta Microsoft w celu uzyskania poprawki. Aby uzyskać pełną listę numerów telefonów pomocy technicznej firmy Microsoft oraz informacje o kosztach, odwiedź następującą witrynę sieci Web firmy Microsoft:
http://support.microsoft.com/contactus/?ws=supportUwaga W wyjątkowych przypadkach użytkownik telefonujący do pomocy technicznej może być zwolniony z opłaty, jeżeli wykwalifikowany pracownik pomocy technicznej firmy Microsoft ustali, że określona aktualizacja umożliwia rozwiązanie zgłoszonego problemu. Normalne koszty pomocy technicznej będą dotyczyć dodatkowych pytań oraz problemów, których rozwiązanie nie jest objęte określoną aktualizacją.
Wymagania wstępne
Musi mieć Microsoft Visual Studio 2010 zainstalować tę poprawkę.
Informacje dotyczące ponownego uruchamiania
Nie musisz ponownie uruchomiać komputera po zastosowaniu tej poprawki.
Informacje dotyczące pliku
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 |
16.0.30319.351 |
658,240 |
23-Aug-2010 |
06:45 |
x86 |
C1.dll |
16.0.30319.351 |
723,776 |
23-Aug-2010 |
06:45 |
x86 |
C1.dll |
16.0.30319.351 |
899,400 |
23-Aug-2010 |
06:45 |
x86 |
C1xx.dll |
16.0.30319.351 |
2,286,920 |
23-Aug-2010 |
06:45 |
x86 |
C1xx.dll |
16.0.30319.351 |
2,428,232 |
23-Aug-2010 |
06:45 |
x86 |
C1xx.dll |
16.0.30319.351 |
2,659,664 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
201,032 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
202,568 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
219,976 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
221,000 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
290,632 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
291,656 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
292,680 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
293,704 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
408,392 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
408,904 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
450,376 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
460,104 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
460,616 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
478,024 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
478,536 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
483,656 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
484,168 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
486,728 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
487,240 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
491,848 |
23-Aug-2010 |
06:45 |
x86 |
Clui.dll |
16.0.30319.351 |
492,360 |
23-Aug-2010 |
06:45 |
x86 |
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.