CORRECÇÃO: Cadeias literais são interpretado incorrectamente pelo compilador de Visual C++ no Visual Studio 2008 Service Pack 1 quando as cadeias literais utilizam a codificação UTF-8 e contenham caracteres asiáticos

Sintomas

Considere o seguinte cenário:

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

  • Um ficheiro do projecto tem estreito cadeias literais. Estas cadeias literais contenham caracteres asiáticos e não têm como prefixo com a letra "l".

  • As cadeias literais utilizam codificação UTF-8.

Neste cenário, quando compila o projecto, as cadeias literais são interpretado incorrectamente pelo compilador. Além disso, se deparar com um dos seguintes problemas:

  • A operação de compilação é efectuada com êxito. No entanto, as cadeias literais são apresentados incorrectamente na aplicação gerada. Além disso, também poderá receber as seguintes mensagens de aviso quando compilar o projecto:

    aviso C4566: carácter representado por universal-carácter-name 'xx' não pode ser representado na página de códigos actual.

  • A operação de compilação falha. Além disso, poderá receber a seguinte mensagem de erro quando compilar o projecto:

    Erro C2078: demasiados inicializadores

Causa

Este problema ocorre porque o compilador assume que o ficheiro na secção "Sintomas" tem MBCS codificação. Devido a este comportamento, o compilerincorrectly converte o ficheiro.

Resolução

Informações sobre correção

Existe uma correção suportada pela Microsoft. No entanto, esta correção destina-se apenas a corrigir o problema descrito neste artigo. Aplique esta correcção apenas em sistemas que tenham este problema específico.

Se a correcção estiver disponível para transferência, existirá uma secção de "Transferência de correcção disponível" na parte superior deste artigo da Base de dados de conhecimento. Se esta secção não for apresentado, submeta um pedido de suporte e serviço de cliente Microsoft para obter a correcção.

Nota Caso ocorram problemas adicionais ou se for necessária a resolução de problemas, poderá ter de criar um pedido de assistência separado. Os custos de normais do suporte serão aplicados a questões de suporte adicional e problemas incluídos nesta correção específica. Para uma lista completa dos números de telefone de suporte e serviço de cliente da Microsoft ou para criar um pedido de assistência separado, visite o seguinte Web site da Microsoft:

http://support.microsoft.com/contactus/?ws=supportNota O formulário "Transferência de correcção disponível" apresenta os idiomas nos quais a correcção está disponível. Se não visualizar o seu idioma, é porque uma correcção não está disponível para esse idioma.

Pré-requisitos

Tem de ter o Visual Studio 2008 Service Pack 1 (SP1) instalado para aplicar esta correcção.

Requisito de reinício

Não é necessário reiniciar o computador depois de aplicar esta correcção não se estiver a ser utilizada nenhuma instância do Visual Studio.

Informações sobre substituição da correção

Esta correcção não substitui outras correcções.

Informações de ficheiro

A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são listadas na hora Universal Coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador Fuso horário no item data e hora no painel de controlo.

Nome do ficheiro

Versão do ficheiro

Tamanho do ficheiro

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

Estado

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Mais informações

Para resolver o erro no compilador, instalar esta correcção e, em seguida, guarde o ficheiro com uma marca de ordem de bytes. Além disso, adicione a seguinte directiva "pragma" antes das cadeias literais no ficheiro de origem.

#pragma execution_character_set("utf-8")

Nota A Directiva "pragma" define a unidade de tradução para o ficheiro de origem até que a Directiva "pragma" é substituída por outra directiva "pragma".

Precisa de mais ajuda?

Aumente os seus conhecimentos
Explore as formações
Seja o primeiro a obter novas funcionalidades
Aderir ao Microsoft insiders

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×