Korriger: Strenglitteraler er misinterpreted av Visual C++ kompilatoren i Visual Studio 2010 når strenglitteraler bruker UTF-8-koding, og inneholder asiatiske tegn



Hvis en Microsoft Visual Studio 2008-versjon av denne artikkelen, kan du se 980263 .

Symptomer


Tenk deg følgende:
  • Du oppretter Visual C++-prosjektet i Microsoft Visual Studio 2010.
  • En fil i prosjektet initialiserer smale strenglitteraler. Disse strenglitteraler inneholder asiatiske tegn og prefikset ikke med bokstaven "l".
  • Filen ble lagret ved hjelp av UTF-8-koding.

Når du kompilerer prosjektet, i dette scenariet er strenglitteraler misinterpreted av kompilatoren. I tillegg får du ett av følgende problemer:
  • Når filen inneholder et merke for byterekkefølge (BOM), utføres kompilering operasjonen. Imidlertid vises strenglitteraler fremdeles feil i programmet som genererte. I tillegg kan du få følgende feilmelding når du kompilerer prosjektet:
    Advarsel C4566: Tegn som er representert av universal-tegn-name "xx" kan ikke representeres i den gjeldende tegntabellen.
  • Kompiler operasjonen mislykkes. I tillegg kan du få følgende feilmelding når du kompilerer prosjektet:
    Feil C2078: For mange initialiseringer
  • Kompiler operasjonen mislykkes. I tillegg kan du få følgende feilmelding når du kompilerer prosjektet:
    Advarsel C4129: 'tegn': Ukjent avbruddssekvens tegn.

Årsak


Dette problemet oppstår fordi kompilatoren forutsetter at litteraler i filen kan tolkes som den første byten av MBCS-koding i stedet for som én byte Unicode. Kompilatoren oversetter feilaktig filen på grunn av dette problemet.

Oppløsning


Hvis du vil løse dette problemet ved å bruke denne hurtigreparasjonen på datamaskinen der du kompilerer prosjektet. Deretter lagrer du filen med et merke for byterekkefølge og deretter legge til følgende "pragma"-direktivet rett før strenglitteraler i kildefilen:
#pragma execution_character_set("utf-8")
Obs! Dette "pragma"-direktivet angir NAT-enhet for kildefilen til dette direktivet "pragma" erstattes av en annen "pragma"-direktivet.

Hvis du vil ha mer informasjon om denne hurtigreparasjonen

Informasjon om hurtigreparasjon

En støttet hurtigreparasjon er nå tilgjengelig fra Microsoft. Det er imidlertid ment å løse problemet som er beskrevet i denne artikkelen. Bruk den bare på systemer som har dette bestemte problemet. Denne hurtigreparasjonen kan gjennomgå ytterligere testing. Hvis du ikke er alvorlig påvirket av dette problemet, anbefaler vi derfor at du venter på neste som inneholder denne hurtigreparasjonen.

Hvis du vil løse dette problemet umiddelbart, kontakter du Microsoft Kundestøtte for å få hurtigreparasjonen. For en fullstendig liste over telefonnumre for Microsofts kundestøttetjenester og informasjon om støttekostnader, kan du gå til følgende Microsoft-webområde:Obs! I spesielle tilfeller kan avgifter som vanligvis påløper for oppringinger til kundestøtte avbrutt hvis en Microsoft-tekniker avgjør at en bestemt oppdatering løser problemet. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av den gjeldende oppdateringen.

Forutsetninger

Du må ha Microsoft Visual Studio 2010 installert for å bruke denne hurtigreparasjonen.

Informasjon om omstart

Du har ikke datamaskinen på nytt etter at du har installert denne hurtigreparasjonen.

Filinformasjon

Den engelskspråklige versjonen av denne hurtigreparasjonen har filattributtene (eller senere filattributter) som er oppført i følgende tabell. Datoene og klokkeslettene for disse filene er oppført i Coordinated Universal Time (UTC). Når du viser filinformasjonen, konverteres den til lokal tid. Hvis du vil finne forskjellen mellom UTC og lokal tid, kan du bruke kategorien tidssone under dato og klokkeslett i Kontrollpanel.

FilnavnFilversjonFilstørrelseDatoTidPlattform
C1.dll16.0.30319.351658,24023-Aug-201006:45x86
C1.dll16.0.30319.351723,77623-Aug-201006:45x86
C1.dll16.0.30319.351899,40023-Aug-201006:45x86
C1xx.dll16.0.30319.3512,286,92023-Aug-201006:45x86
C1xx.dll16.0.30319.3512,428,23223-Aug-201006:45x86
C1xx.dll16.0.30319.3512,659,66423-Aug-201006:45x86
Clui.dll16.0.30319.351201,03223-Aug-201006:45x86
Clui.dll16.0.30319.351202,56823-Aug-201006:45x86
Clui.dll16.0.30319.351219,97623-Aug-201006:45x86
Clui.dll16.0.30319.351221,00023-Aug-201006:45x86
Clui.dll16.0.30319.351290,63223-Aug-201006:45x86
Clui.dll16.0.30319.351291,65623-Aug-201006:45x86
Clui.dll16.0.30319.351292,68023-Aug-201006:45x86
Clui.dll16.0.30319.351293,70423-Aug-201006:45x86
Clui.dll16.0.30319.351408,39223-Aug-201006:45x86
Clui.dll16.0.30319.351408,90423-Aug-201006:45x86
Clui.dll16.0.30319.351450,37623-Aug-201006:45x86
Clui.dll16.0.30319.351460,10423-Aug-201006:45x86
Clui.dll16.0.30319.351460,61623-Aug-201006:45x86
Clui.dll16.0.30319.351478,02423-Aug-201006:45x86
Clui.dll16.0.30319.351478,53623-Aug-201006:45x86
Clui.dll16.0.30319.351483,65623-Aug-201006:45x86
Clui.dll16.0.30319.351484,16823-Aug-201006:45x86
Clui.dll16.0.30319.351486,72823-Aug-201006:45x86
Clui.dll16.0.30319.351487,24023-Aug-201006:45x86
Clui.dll16.0.30319.351491,84823-Aug-201006:45x86
Clui.dll16.0.30319.351492,36023-Aug-201006:45x86

Status


Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".