DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 232580 - Última revisão: quarta-feira, 7 de Dezembro de 2005 - Revisão: 4.4

 

Sumário

Algumas aplicações (especialmente aquelas que são Web baseado) tem de lidar com Unicode dados codificados com o método de codificação UTF-8. SQL Server 7.0 e SQL Server 2000 utilizam um diferente codificação Unicode (UCS-2) e não reconhecem o UTF-8 como dados de caracteres válida. Este artigo aborda algumas opções para lidar com situação.

Mais Informação

Dados Unicode podem ser codificados de muitas formas diferentes. UCS-2 e UTF-8 são duas formas comuns de armazenar padrões de bit que representam caracteres Unicode. Microsoft Windows NT, SQL Server, Java, COM e o controlador de ODBC para SQL Server e fornecedor de OLEDB tudo internamente representam dados Unicode como UCS-2.

As opções para utilizar o SQL Server 7.0 ou SQL Server 2000 como um servidor back-end de uma aplicação que envia e recebe dados Unicode que codificados como UTF-8 incluem:
  1. Se a aplicação utiliza ASP (Active Server Pages) e estiver a utilizar o Internet Information Server (IIS) 5.0 e Microsoft Windows 2000, pode adicionar "< % Session.Codepage=65001 % >" para o seu script ASP do lado do servidor. Isto indica ao IIS para converter todas as cadeias geradas dinamicamente (exemplo: Response.Write) de UCS-2 para UTF-8 automaticamente antes de enviar-lhes para o cliente.

    Se não pretender activar sessões, pode utilizar em alternativa a directiva de SSI "< % @ CodePage = 65001 % >".

    Quaisquer dados UTF-8 enviados do cliente ao servidor através de GET ou POST também são convertidos automaticamente para UCS-2. A propriedade Session.Codepage é o método recomendado para processar dados UTF-8 dentro de uma aplicação web. Esta definição de página de código 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. Converta de e para UCS-2 ou UTF-8 conforme na aplicação. Exemplos de código 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/)
    Poderá encontrar uma descrição de alto nível do algoritmo para converter UCS-2 em UTF-8 no documento pedido de comentários Internet RFC2279.

    No Windows NT ou Windows 2000, pode utilizar as funções de Win32 MultiByteToWideChar e WideCharToMultiByte para converter UTF-8 para e de UCS-2, passando CP_UTF8 constante (65001) como o primeiro parâmetro para as funções.
  3. Modificar a aplicação utilizar UCS-2 em vez de codificação UTF-8.
  4. Armazenar os dados UTF-8 reais no servidor utilizando colunas BINARY/VARBINARY/IMAGE. Armazenar dados UTF-8 no SQL Server significa que a do SQL Server não pode utilizar para ordenar ou localizar intervalos destes valores, como se os dados foram dados de caracteres válida. Os tipos de operações em colunas com dados de UTF-8 não iriam devolver os resultados esperados incluem "ORDER BY", maior - que ">"e menos - que"<" comparações e as funções de manipulação de cadeia SQL Server incorporadas, tais como SUBSTRING().

    No entanto, as comparações de igualdade, funcionará, desde que as cadeias comparadas são equivalentes num nível de byte. Tenha em atenção que, se armazenar dados UTF-8 no SQL Server não deve utilizar colunas de caracteres (CHAR/NCHAR/VARCHAR e por aí em diante). UTF-8 não é dados de caracteres válidos para o SQL Server e armazenando dados de caracteres não nas colunas de caracteres, que poderá encontrar problemas, tais como os problemas discutidos nos seguintes artigos da base de dados de conhecimento da Microsoft:
    155723  (http://support.microsoft.com/kb/155723/EN-US/ ) INF: SQL Server truncagem de uma cadeia DBCS
    234748  (http://support.microsoft.com/kb/234748/EN-US/ ) PROBLEMA: O controlador de ODBC para SQL Server converte eventos de idioma para Unicode
    Se estiver a considerar esta opção, tenha em atenção que, se alguma vez necessitar de aceder a dados UTF-8 armazenados dentro do SQL Server a partir de qualquer aplicação seja um Web browser (por exemplo, de um não-aplicação baseada na Web ODBC) terá de efectuar uma conversão de UTF-8 para UCS-2 desta aplicação como ODBC OLEDB, COM chamadas de API do Win32, VB e tempo de execução C cadeia manipulação funções não funcionam com dados UTF-8. Isto move-se a carga de conversão para uma aplicação diferente.
  5. Se os requisitos não incluírem a necessidade de armazenar dados de uma combinação de idiomas que não pode ser satisfeitos por uma página de código único, não poderá ser necessário utilizar Unicode.
Suporte Unicode foi introduzido para SQL Server 7.0 a partir do SQL Server. Uma vez que SQL Server 6.5 não suporta a armazenar dados Unicode, as únicas opções para o SQL Server 6.5 são descritas no passo 4 e no passo 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 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft