Síntomas
Imagine el siguiente escenario:
-
Crear un proyecto de Visual C++ en Microsoft Visual Studio 2008 Service Pack 1 (SP1).
-
Un archivo en el proyecto con literales de cadena de caracteres estrechos. Estos literales de cadena contienen caracteres asiáticos y no llevan el prefijo con la letra "l".
-
Los literales de cadena utilizan la codificación UTF-8.
En este escenario, cuando se compila el proyecto, los literales de cadena se interpretan incorrectamente por el compilador. Además, se encuentra con uno de los siguientes problemas:
-
La operación de compilación se realiza correctamente. Sin embargo, los literales de cadena se muestran incorrectamente en la aplicación generada. Además, también puede recibir los siguientes mensajes de advertencia cuando se compila el proyecto:
Advertencia C4566: no se puede representar el carácter representado por el nombre de carácter universal 'xx' en la página de códigos actual.
-
Se produce un error en la operación de compilación. Además, puede recibir el siguiente mensaje de error cuando se compila el proyecto:
Error C2078: hay demasiados inicializadores
Causa
Este problema se produce porque el compilador supone que el archivo en la sección "Síntomas" tiene codificación MBCS. Debido a este comportamiento, el compilerincorrectly convierte el archivo.
Solución
Información de la revisión
Existe un hotfix disponible desde Microsoft. Sin embargo, esta revisión se diseñó para corregir únicamente el problema que se describe en este artículo. Aplíquela sólo a sistemas que experimenten este problema específico.
Si la revisión está disponible para su descarga, hay una sección de "Descarga de revisión disponible" en la parte superior de este artículo de Knowledge Base. Si esta sección no aparece, envíe una solicitud al servicio de atención al cliente y soporte técnico para obtener la revisión.
Nota: Si se producen problemas adicionales o si se requiere cualquier otra solución, será necesario crear una solicitud de revisión independiente. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no califican para esta revisión específica. Para obtener una lista completa de los números de teléfono de servicio al cliente de Microsoft o para crear una solicitud de servicio independiente, visite el siguiente sitio Web de Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota: El formulario de "Descarga de Hotfix disponible" muestra los idiomas para los que el Hotfix está disponible. Si no ve su idioma, es porque no hay una revisión para ese idioma.
Requisitos previos
Debe tener Visual Studio 2008 Service Pack 1 (SP1) instalado para poder aplicar este hotfix.
Requisito de reinicio
No es necesario que reinicie el equipo después de aplicar esta revisión si no se utiliza ninguna instancia de Visual Studio.
Información de reemplazo de revisión
Esta revisión no sustituye a otras revisiones.
Información de archivo
La versión en inglés de esta revisión tiene los atributos de archivo (o atributos del archivo más reciente) mostrados en la tabla siguiente. Las fechas y horas de estos archivos se muestran en la hora Universal coordinada (UTC). Al ver la información del archivo, se convierte en hora local. Para encontrar la diferencia entre la hora UTC y la hora local, utilice la ficha Zona horaria en el elemento de Fecha y hora del Panel de control.
Nombre del archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Hora |
Plataforma |
---|---|---|---|---|---|
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 |
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Más información
Para resolver el error en el compilador, instalar esta revisión y, a continuación, guarde el archivo junto con una marca de orden de bytes. Además, agregue la siguiente directiva de "pragma" justo antes de los literales de cadena en el archivo de origen.
#pragma execution_character_set("utf-8")
Nota: La directiva "pragma" establece la unidad de traducción para el archivo de origen hasta que la directiva "pragma" se sustituirá por otra directiva "pragma".