DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 232580 - Última revisão: quarta-feira, 7 de dezembro de 2005 - Revisão: 4.4

 

Sumário

Alguns aplicativos (principalmente aquelas que são Web com base) devem lidar com dados Unicode que estão codificados com o método de codificação UTF-8. SQL Server 7.0 e SQL Server 2000 usar uma outra codificação Unicode (UCS-2) e não reconhecem o UTF-8 como dados de caractere válido. Este artigo descreve algumas opções para lidar com essa situação.

Mais Informações

Dados Unicode podem ser codificados de várias maneiras diferentes. UCS-2 e UTF-8 são duas maneiras comuns de armazenar padrões de bit que representam caracteres Unicode. Microsoft Windows NT, SQL Server, Java, COM e o driver ODBC do SQL Server e provedor OLEDB todos os internamente representam dados Unicode como UCS-2.

As opções para usar o SQL Server 7.0 ou SQL Server 2000 como um servidor back-end para um aplicativo que envia e recebe dados Unicode que são codificados como UTF-8 incluem:
  1. Se o aplicativo usa o Active Server Pages (ASP) e você estiver usando o Internet Information Server (IIS) 5.0 e Microsoft Windows 2000, você pode adicionar "< % Session.Codepage=65001 % >" ao lado do servidor ASP script. Isso instrui o IIS para converter todas as seqüências geradas dinamicamente (exemplo: Response.write) do UCS-2 para UTF-8 automaticamente antes de enviá-los para o cliente.

    Se desejar habilitar sessões, você também pode usar a diretiva de servidor "< % @ CodePage = código 65001 % >".

    Qualquer UTF-8 os dados enviados do cliente ao servidor via GET ou POST também são convertidos automaticamente para UCS-2. A propriedade Session.Codepage é o método recomendado para manipular dados UTF-8 dentro de um aplicativo da web. Essa configuração de página não está disponível no IIS 4.0 e Windows NT 4.0. Para obter informações adicionais, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
    254313  (http://support.microsoft.com/kb/254313/EN-US/ ) Mensagem de erro: Active Server Pages Error 'ASP 0203' código inválido
  2. Traduza para e de UCS-2 ou UTF-8 conforme apropriado dentro do aplicativo. Código de exemplo para este tipo de conversão está localizado no site do Unicode Consortium:

    ftp://ftp.unicode.org/Public/PROGRAMS/CVTUTF/ (ftp://ftp.unicode.org/Public/PROGRAMS/CVTUTF/)
    Uma descrição de alto nível do algoritmo para converter o UCS-2 em UTF-8 pode ser encontrada no documento de solicitação para comentários Internet RFC2279.

    No Windows NT ou Windows 2000, você pode usar as funções Win32, MultiByteToWideChar e WideCharToMultiByte para converter UTF-8 para e de UCS-2, passando a constante CP_UTF8 (código 65001) como o primeiro parâmetro para as funções.
  3. Modificar o aplicativo para usar o UCS-2 em vez de codificação UTF-8.
  4. Armazene os dados reais UTF-8 no servidor usando as colunas BINARY, VARBINARY/IMAGE. Armazenar dados UTF-8 no SQL Server significa que você não pode usar SQL Server para classificar ou localizar intervalos desses valores como se os dados estivessem dados de caractere válido. Os tipos de operações em colunas que contém dados UTF-8 não retornaria resultados esperados incluem "ORDER BY", maior - de ">"e menos - de"<" comparações e as funções de manipulação de seqüência de caracteres SQL Server internas como SUBSTRING().

    No entanto, as comparações de igualdade, funcionará desde que as seqüências que estão sendo comparadas são equivalentes em um nível de byte. Observe que se você armazenar dados UTF-8 no SQL Server você não deve usar a colunas de caracteres (CHAR, NCHAR/VARCHAR e assim por diante). UTF-8 não é dados de caractere válido para o SQL Server e armazenando dados de caractere não em colunas de caracteres que risco encontrando problemas, como os problemas discutidos nos seguintes artigos da Base de dados de Conhecimento Microsoft:
    155723  (http://support.microsoft.com/kb/155723/EN-US/ ) INF: SQL Server truncamento de uma cadeia de caracteres DBCS
    234748  (http://support.microsoft.com/kb/234748/EN-US/ ) PROBLEMA: O driver ODBC para SQL Server converte eventos de idioma para Unicode
    Se você estiver pretendendo essa opção, tenha em mente que, se você precisar acessar dados UTF-8 armazenados dentro do SQL Server de qualquer aplicativo diferente de um navegador da Web (por exemplo, de um aplicativo de ODBC não baseado em Web) será necessário fazer uma conversão de UTF-8 em UCS-2 deste aplicativo como ODBC, OLE DB, COM, chamadas de API do Win32, VB e C runtime seqüência manipulação de funções não funcionam com dados UTF-8. Isso move a carga de conversão para um aplicativo diferente.
  5. Se seus requisitos não incluem a necessidade de armazenar dados de uma combinação de idiomas que não podem ser atendidas por uma página de código único, talvez você não precise usar Unicode.
Suporte a Unicode foi introduzida para SQL Server começando com o SQL Server 7.0. Pois SQL Server 6.5 não oferece suporte para o armazenamento de dados Unicode, as únicas opções para o SQL Server 6.5 são descritas na etapa 4 e etapa 5.

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Palavras-chave: 
kbmt kbinfo KB232580 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 232580  (http://support.microsoft.com/kb/232580/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store