Sintomas

Considere o seguinte cenário:

  • Criar um projeto Visual C++ no Microsoft Visual Studio 2008 Service Pack 1 (SP1).

  • Um arquivo no projeto tem literais de cadeia de caracteres estreita. Esses literais de cadeia de caracteres contém caracteres asiáticos e não são prefixados com a letra "l".

  • Os literais de sequência de caracteres usam a codificação UTF-8.

Nesse cenário, quando você compilar o projeto, os literais de sequência de caracteres são mal interpretados pelo compilador. Além disso, você encontrar um dos seguintes problemas:

  • A operação de compilação for bem-sucedida. No entanto, os literais de sequência de caracteres são exibidos incorretamente no aplicativo gerado. Além disso, você também pode receber as seguintes mensagens de aviso quando você compilar o projeto:

    Aviso C4566: caractere representado pelo universal--nome do caractere 'xx' não pode ser representado na página de código atual.

  • A operação de compilação falhará. Além disso, você pode receber a seguinte mensagem de erro quando você compilar o projeto:

    Erro C2078: inicializadores de excesso

Causa

Esse problema ocorre porque o compilador pressupõe que o arquivo na seção "Sintomas" tem codificação MBCS. Devido a esse comportamento, o compilerincorrectly converte o arquivo.

Resolução

Informações sobre o hotfix

Um hotfix compatível foi disponibilizado pela Microsoft. No entanto, esse hotfix destina-se a corrigir somente o problema descrito neste artigo. Aplique este hotfix somente aos sistemas que apresentarem esse problema específico.

Se o hotfix estiver disponível para download, há uma seção "Download de Hotfix disponível" na parte superior deste artigo da Base de Conhecimento. Se essa seção não for exibida, envie uma solicitação ao suporte e atendimento ao cliente Microsoft para obter o hotfix.

Observação: caso outros problemas estejam ocorrendo ou caso qualquer solução de problemas seja necessária, talvez você precise criar uma solicitação de serviço separada. Os custos normais de suporte serão aplicados a questões de suporte adicionais e problemas que não sejam específicos deste hotfix. Para obter uma lista completa dos números de telefone do Atendimento Microsoft e suporte ou para criar uma solicitação de serviço separada, visite o seguinte site da Microsoft:

http://support.microsoft.com/contactus/?ws=supportObservação: o formulário "Baixar Hotfix disponível" exibe os idiomas para os quais o hotfix está disponível. Caso você não veja seu idioma, é porque um hotfix não está disponível para esse idioma.

Pré-requisitos:

Você deve ter o Visual Studio 2008 Service Pack 1 (SP1) instalado para aplicar esse hotfix.

Requisitos de reinicialização:

Você não precisa reiniciar o computador após aplicar este hotfix se nenhuma instância do Visual Studio está sendo usada.

Informações de substituição do hotfix:

Esse hotfix não substitui outros hotfixes.

Informações sobre o arquivo:

A versão em inglês deste hotfix possui os atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas na Hora Universal Coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para localizar a diferença entre o UTC e a hora local, use a guia Fuso Horário no item Data e Hora no Painel de Controle.

Nome do Arquivo

Versão do arquivo

Tamanho do arquivo

Data

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

Status

A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".

Mais informações

Para resolver o erro no compilador, instale esse hotfix e, em seguida, salve o arquivo com uma marca de ordem de byte. Além disso, adicione a seguinte diretiva de "pragma" antes dos literais de cadeia de caracteres no arquivo de origem.

#pragma execution_character_set("utf-8")

Observação: A diretiva "pragma" define a unidade de conversão para o arquivo de origem até que a diretiva "pragma" é substituída por outra diretiva "pragma".

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×