Симптоми
Да разгледаме следния сценарий:
-
Създаване на Visual C++ проект в Microsoft Visual Studio 2008 Service Pack 1 (SP1).
-
Файл в проекта е тясно низ числа. Тези числа низ съдържа азиатски знаци и не започват с буквата "Л."
-
Низ числа използвайте UTF-8 кодиране.
В този случай когато компилирате проекта, низ числа са погрешно от компилатор. Освен това се сблъсквате с един от следните проблеми:
-
Успешна операция компилация. Обаче низ числа се показват неправилно генерирани приложението. Освен това можете да получите следното съобщение за предупреждение, когато компилирате проекта:
предупреждение C4566: знаци, представена от световно-знаково име "xx" не може да представлява в текущата кодова страница.
-
Компилация операцията е неуспешна. Освен това можете да получите следното съобщение за грешка, когато компилирате проекта:
грешка C2078: твърде много initializers
Причина
Този проблем възниква, защото компилатор предполага, че в раздела "Симптоми" е MBCS кодиране. Поради това compilerincorrectly превежда файла.
Решение
Информация за актуалната корекция
Поддържана актуална корекция се предлага от Microsoft. Тази актуална корекция обаче е предназначена да коригира само проблема, описан в тази статия. Прилагайте тази корекция само към системи, изпитващи този конкретен проблем.
Ако актуалната корекция е налична за изтегляне, има секция "Налично изтегляне предлага" в горната част на тази статия от базата знания. Ако тази секция не се появи, изпратете заявка за обслужване на клиенти на Microsoft и поддръжка, за да получите актуалната корекция.
Забележка: Ако възникнат допълнителни проблеми или проблеми, трябва да създадете отделна заявка за поддръжка. Обичайните такси за поддръжката ще важат за допълнителни въпроси и проблеми, които не спадат към конкретната актуална корекция. За пълен списък на телефонните номера на Microsoft за обслужване на клиенти и поддръжка или да създадете отделна заявка за поддръжка посетете следния уеб сайт на Microsoft:
http://support.microsoft.com/contactus/?ws=supportЗабележка: Формулярът "Налична актуална корекция изтегляне" показва езиците, за които е налична актуалната корекция. Ако не виждате вашия език, това е защото актуалната корекция не е налична за този език.
Необходими условия:
Трябва да имате Visual Studio 2008 Service Pack 1 (SP1) за да приложите тази актуална корекция.
Изискване за рестартиране
Не трябва да рестартирате компютъра, след като приложите тази актуална корекция ако няма екземпляр на Visual Studio се използва.
Информация за заместване на актуалната корекция
Тази актуална корекция не замества други спешни корекции.
Файлова информация
Англоезичната версия на тази спешна корекция има файлови атрибути (или по-нови файлови атрибути), които са изброени в следващата таблица. Датите и часовете за тези файлове са изброени в координирано световно време (UTC). При преглед на информацията за файла, преобразувана в местно време. За да намерите разликата между UTC и местното време, използвайте раздела часова зона в елемента " Дата и час " в контролния панел.
Име на файл |
Версия на файла |
Размер на файла |
Дата |
Време |
Платформа |
---|---|---|---|---|---|
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 |
Статус
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, изброени в раздела "Отнася се за".
Допълнителна информация
За да отстраните тази грешка в компилатора, инсталирате тази актуална корекция и го запишете заедно-байт знак. Освен това добавете "pragma" директива преди низ числа във файла източник.
#pragma execution_character_set("utf-8")
Забележка: "Pragma" директивата за превод единица за файла източник докато директива "pragma" се заменя с друг "pragma" директива.