Descrição de armazenar dados UTF-8 no SQL Server

Traduções deste artigo Traduções deste artigo
ID do artigo: 232580 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

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:
    254313Mensagem 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/
    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:
    155723INF: SQL Server truncamento de uma cadeia de caracteres DBCS
    234748PROBLEMA: 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.

Propriedades

ID do artigo: 232580 - Última revisão: quarta-feira, 7 de dezembro de 2005 - Revisão: 4.4
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á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

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com