ID do artigo: 153449 - Última revisão: segunda-feira, 17 de novembro de 2003 - Revisão: 3.0

INF: Páginas de código do SQL Server e comportamento de AutoAnsiToOem

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo explica páginas de código no SQL Server e como inserir ou recuperar dados é afetado por ativar ou desativar a configuração AutoAnsiToOem.

Uma página de código, também conhecido como um caractere definido, é um conjunto de 256 maiúsculas e minúsculas, números e símbolos. Os caracteres imprimíveis dos primeiros 128 valores são os mesmos para todas as opções de conjunto de caracteres. Os últimos 128 caracteres, às vezes referidos como caracteres estendidos, diferem de conjunto para conjunto. A página de código padrão para o SQL Server 4.21a é página de código 850 (multilíngüe). O padrão do SQL Server 6.0 e 6.5 é ISO 8859-1 (Latino 1 ou ANSI), também conhecido como página de código 1252. A página de código para o SQL Server determina ambos os tipos de caracteres que o SQL Server reconheça no seu banco de dados e os resultados que o SQL Server retorna para consultas que envolvem comparações de caractere.

Observe que a página de código do SQL Server é diferente da página de código do sistema operacional. Sistemas operacionais Windows NT e Windows 95 ter uma página de código ANSI e uma página de código OEM. As páginas de código ANSI e OEM dependem das configurações de país. Para os EUA inglês Windows NT e Windows 95, a página de código ANSI padrão é 1252, e a página de código OEM é 437 (Estados Unidos Em inglês). MS-DOS só tem uma página de código OEM. Para o português do Brasil, esta página de código é 437 por padrão. Windows 3.x é executado como uma extensão para MS-DOS e tem uma página de código 1252 ANSI por padrão. Console do Windows NT é internamente unicode; no entanto, isso é um caso especial e devem aparecer estar em execução em uma página de código do MS-DOS. Portanto, aplicativos de console no Windows NT efetivamente executar a página de código OEM do computador. No entanto, qualquer linha de comando parâmetros passados para o aplicativo de console são na página de código ANSI em vez da página de código OEM e, assim, uma tradução de AnsiToOem é exigida pelo aplicativo de console para passar corretamente os parâmetros para o SQL Server.

A entrada do Registro AutoAnsiToOem controla o comportamento de conversão padrão quando dados são inseridos ou recuperados. Se AutoAnsiToOem estiver habilitada, conversão estiver habilitada nos seguintes casos:
  • Clientes de ANSI para OEM servidores
  • Clientes de OEM para servidores do ANSI
Se AutoAnsiToOem for desativado, conversão está desativado para todas as conexões.

Todos os clientes baseados no Windows (como ISQL/w, SQL Enterprise Manager, Gerenciador de transferência, administrador SQL e Gerenciador de objetos SQL) são considerados clientes ANSI. MS-DOS ou aplicativos console como ISQL e BCP são considerados clientes OEM. A exceção a isso é a opção de transferir dados do Gerenciador de objetos, que se comporta como um cliente OEM.

Um SQL Server com uma página de código de 1250 1259 a é considerado para ser um servidor de ANSI e um SQL Server com qualquer outra página de código (por exemplo, 437 ou 850) é considerado como um servidor do OEM.

A página de código OEM usada para converter caracteres depende a atual página de código OEM do sistema operacional do cliente. Por exemplo, com a opção AutoAnsiToOem ativada, o caractere ASCII 165 ([ASCII 165]) em um servidor de ANSI obtém convertido para ASCII 190 ([ASCII 165]) ao selecionar de um cliente OEM com página de código 850 e ASCII 157 ([ASCII 165]) ao selecionar de um cliente OEM com página de código 437.

Mais Informações

A tabela a seguir fornece uma visão geral para o restante deste artigo:
Recolher esta tabelaExpandir esta tabela
ParteDescrição
UMComo determinar a página de código do SQL Server
BHabilitando ou desabilitando AutoAnsiToOem
CComo verificar a validade dos dados salvos
DO que acontece quando um caractere em uma página de código está indisponível em outro
EInserir caracteres estendidos com um teclado americano
FComo alterar a página de código OEM do Windows NT e Windows 95
GComo alterar a página de código OEM do MS-DOS e do Windows 3.x
HSugestões de cliente para dados consistentes
IExemplos de Isql.exe do MS-DOS
JExemplos de Bcp.exe Win32
KExemplos de Isqlw.exe
LExemplos do Gerenciador de transferência
MODBC e ANSI para OEM conversões
NExemplos de cliente ODBC do Microsoft Query
OOutros artigos sobre página de código relacionados

PARTE A: Como determinar a página de código do SQL Server

O procedimento armazenado sp_helpsort pode ser usado para localizar classificação do SQL Server conjunto ordem e o caractere.

Parte B: Habilitando ou desabilitando AutoAnsiToOem

A entrada do Registro AutoAnsiToOem pode ser habilitada ou desabilitada, selecionando o ANSI automático à caixa de seleção de OEM no utilitário de configuração do cliente. No SQL Server 4.21a, automática ANSI para OEM é desabilitado por padrão, ao passo que nas versões 6.0 e 6.5, ele é ativado por padrão.

PARTE C: Como verificar a validade dos dados salvos

A função de seqüência de caracteres Transact SQL ASCII(char_expr) pode ser usada para determinar o que realmente é salvo no servidor. Esta função mostra o valor código ASCII o caractere mais à esquerda em uma expressão de caractere. Por exemplo, se você tiver caracteres "[ASCII 177]" salvo em um servidor 850, selecionando os dados de isql/w pode mostrar caracteres "[ASCII 177]" (quando for AutoAnsiToOem em) ou "[ASCII 241]" (quando AutoAnsiToOem está desativado). No entanto, selecionar ASCII(<column_name>) mostrará 241 (que é "[ASCII 177]" na página de código 850).

PARTE D: o que acontece quando um caractere em uma página de código não está em outro disponível

Se uma conversão ocorre e um caractere em uma página de código não está disponível em outro, o caractere obtém convertido para seu caractere mais próximo equivalente na página de código. Por exemplo, 224 ASCII ("alfa") na página de código 437 é convertido para 97("a") na página de código ANSI. Quando você convertê-lo volta para a página de código 437, você recebe 97("a"). Este é um problema, porque agora você perdeu 224("alpha") original. Isso pode causar potencialmente dados incorretos sejam salvos no seu servidor, como acontece nos dois exemplos a seguir:

Exemplo 1:

Você tem um servidor de OEM na qual você está inserindo dados em um cliente ANSI e sua opção de AutoAnsiToOem está habilitada. Se o caractere que você está inserindo é válido em ambas as páginas de código, os dados corretos serão salvas. No entanto, se o caractere é válido em ANSI mas não no OEM, os dados corretos só serão salvas.

Exemplo 2:

Você insere dados em um servidor de ANSI de um cliente OEM e é ativada a opção AutoAnsiToOem. Se o caractere que você está inserindo é válido em ambas as páginas de código, os dados corretos serão salvas. No entanto, se o caractere é válido em OEM e não em ANSI, em seguida, dados corretos não serão salvas.


PARTE E: Inserindo estendido de caracteres com um teclado americano

Pressione NUMLOCK e utilizar o teclado numérico no lado direito do teclado. Para inserir caracteres estendidos ANSI, mantenha pressionada a tecla ALT e digite o código ASCII do caractere precedido por um zero (0). Para inserir caracteres estendidos de OEM, mantenha a tecla ALT e digite apenas o código do caractere ASCII. Por exemplo, para inserir +, mantenha pressionada a tecla ALT e digite 0165, ou digite 157 (se página de código OEM do cliente for 437) ou digite 190 (se a página de código OEM do cliente é 850).

PARTE F: Como alterar a página de código OEM do Windows NT e Windows 95

Para Windows NT 3.51, o método preferido de alterar a página de código OEM no Windows NT é alterar o idioma da International do painel de controle. Para Windows NT 4.0 ou Windows 95, a página de código OEM é escolhida durante a instalação inicial.

Além disso, página de código OEM O pode ser alterada por alterar o OEMCP e OEMHAL (somente Windows NT) valores do registro no seguinte local:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentlControlSet\Control\Nls\CodePage
				
essas alterações tenham efeito após a reinicialização Windows NT ou Windows 95.

O valor de OEMCP controla qual código OEM página para converter ANSI e o valor OEMHAL controla a exibição dos caracteres estendidos em um prompt de comando. Alguns dos valores possíveis para esses valores do Registro são:

Recolher esta tabelaExpandir esta tabela
Página de código OEMValor OEMCPValor OEMHAL
437437Vgaoem.fon
850850vga850.fon

Além de alterar o valor de registro OEMCP, essa configuração também altera o valor OEMHAL, que controla a exibição dos caracteres estendidos em um prompt de comando.

PARTE G: Como alterar a página de código OEM do MS-DOS e do Windows 3.x

Para alterar a página de código para MS-DOS, consulte o capítulo 6, suporte ao idioma nacional no MS-DOS programação referência 6.0. Depois que a página de código do MS-DOS é alterada, execute o programa de instalação do Windows para alterar suas tabelas de conversão de ANSI OEM do ANSI para OEM conversão.

H: PART sugestões de cliente para dados consistentes

As sugestões a seguir ajudará a garantir que os dados armazenados no SQL Server é armazenados acordo com para a página de código do SQL Server em vez de página de código do cliente, que geralmente é a causa do dados inválidos.

Os clientes do MS-DOS: MS-DOS como tem apenas uma página de código OEM e nenhuma página de código ANSI, nenhuma conversão é feita. O cliente sempre armazenará dados no servidor com página de código OEM do cliente, a página de código do SQL Server deve ser definida como corresponder à página de código do cliente.

Clientes OEM e ANSI: se o computador que está executando o SQL Server não estiver usando a página de código ANSI, alterar a página de código OEM do cliente para coincidir com a página de código do SQL Server e ativar a conversão AutoAnsiToOem. Se o computador que executa o SQL Server estiver usando a página de código ANSI, basta ative a conversão AutoAnsiToOem.

Exceções para as sugestões acima são:


  • Para o cliente de Win32 Bcp.exe importar para um servidor de SQL ANSI, altere a página de código do cliente para coincidir com a página de código que os dados foi criados com.
  • Para o cliente Win32 Bcp.exe exportando de um servidor de SQL ANSI, altere a página de código do cliente para a página de código do SQL Server que os resultados da exportação serão importados para. Por exemplo, para importar para um SQL Server com página de código 850, altere página de código do cliente para 850.
  • Para o SQL Server Transfer Manager x 4.2 e cliente 6.0, alterar a página de código do cliente para coincidir com a página de código da página de código não-ANSI SQL Server, se ambos os servidores SQL não estiverem usando a página de código ANSI. A tabela a seguir resume isso:

    Recolher esta tabelaExpandir esta tabela
    Página de código fonte SQL ServerPágina de código do SQL Server de destinoPágina de código de cliente para usar
    ANSI437437
    850ANSI850
    850850850
    437850*

    * Quando transferindo entre páginas de código OEM, fazer transferências de dois em vez disso:
    OEM1 to ANSI followed by ANSI to OEM2.
    					

PARTE I: MS-DOS Isql.exe exemplos

As tabelas em cada um dos exemplos a seguir mostram os equivalentes decimais do caractere em vários pontos.

INSERT e SELECT da + caractere com o cliente MS-DOS Isql.exe com uma página de código 437 do OEM para e partir de um código 437 página SQL Server.

Recolher esta tabelaExpandir esta tabela
OperaçãoNo clienteConversão de clienteNo servidor
INSERIR157157 *157
SELECIONE157157 *157

* O valor nunca é alterada de 157, desde que os clientes do MS-DOS não executam conversões AnsiToOem.

PARTE J: Win32 bcp.exe exemplos

Exemplo 1:

EXPORT e IMPORT do + caractere Win32 Bcp.exe cliente com uma página de código OEM 850 em uma página de 850 código SQL Server.

Recolher esta tabelaExpandir esta tabela
OperaçãoNo clienteConversão de clienteNo servidor
IMPORTAÇÃO190190 *190
EXPORTAR190190 *190

* Como o cliente e o servidor são OEM, nenhuma conversão é executada.

Exemplo 2:

IMPORT de + caractere Win32 Bcp.exe cliente com uma página de código OEM 437 e dados criados com página de código 437, em uma página de código ANSI SQL Server.

Recolher esta tabelaExpandir esta tabela
OperaçãoNo clienteConversão de clienteNo servidor
IMPORTAÇÃO157165 *165

* + convertido para o equivalente ANSI.

Exemplo 3:

EXPORT de 165 caractere Win32 Bcp.exe cliente com uma página de código 437 de OEM, de uma página de código ANSI SQL Server, para importar posteriormente para uma página de 437 código SQL Server.

Recolher esta tabelaExpandir esta tabela
OperaçãoNo servidorConversão de clienteNo cliente
EXPORTAR165157 *157

* + convertido novamente para OEM equivalente.

Exemplo 4:

EXPORT de + caractere Win32 Bcp.exe cliente com uma página de código de OEM 1252, de um ANSI código página SQL Server para importar posteriormente para o mesmo SQL Server.

Recolher esta tabelaExpandir esta tabela
OperaçãoNo servidorConversão de clienteNo cliente
EXPORTAR165165 *165

* Porque a página de código ANSI coincide com a página de código OEM no cliente, nenhuma conversão ocorre.

PARTE K: Exemplos de Isqlw.exe

Exemplo 1:

INSERT, SELECT do Win16 e Win32 Isqlw.exe cliente em uma página de código ANSI SQL Server.

Recolher esta tabelaExpandir esta tabela
OperaçãoNo clienteConversão de clienteNo servidor
INSERIR165165 *165
SELECIONE165165 *165

* Como o cliente e o servidor são ANSI, nenhuma conversão é executada.

Exemplo 2:

Cliente INSERT, SELECT do Win16 e Win32 ISQLW.EXE com página de código OEM 437 em uma página de 437 código SQL Server.

Recolher esta tabelaExpandir esta tabela
OperaçãoNo clienteConversão de clienteNo servidor
INSERIR165157 *157
SELECIONE157165 **165

* [ASCII 165] convertidas em equivalentes de OEM.
** [ASCII 165] convertidas em ANSI equivalentes.

PARTE L: Exemplos de Gerenciador de transferência

Exemplo 1:

SQL Server Transfer Manager 6.0 entre duas páginas de código ANSI SQL Servers.

Recolher esta tabelaExpandir esta tabela
Servidor de origemConversão de cliente do servidor de origemConversão de cliente para dest. servidorServidor de destino
165165 *165 *165

* Como o cliente e o servidor são ANSI, nenhuma conversão é executada.

Exemplo 2:

SQL Server Transfer Manager 6.0 com OEM página de código 437, de uma página de 437 código SQL Server para um ANSI código página SQL Server.

Recolher esta tabelaExpandir esta tabela
Servidor de origemConversão de cliente do servidor de origemConversão de cliente para dest. servidorServidor de destino
157165 *165 **165

* [ASCII 165] convertidas em ANSI equivalentes.
** Porque tanto o cliente e servidor são ANSI nenhuma conversão é executada.

Exemplo 3:

SQL Server Transfer Manager 6.0 com página de código OEM 850, de um ANSI código página SQL Server para uma página de 850 código SQL Server.

Recolher esta tabelaExpandir esta tabela
Servidor de origemConversão de cliente do servidor de origemConversão de cliente para dest. servidorServidor de destino
165165 *190 **190

* Como o cliente e o servidor são ANSI nenhuma conversão é executada.
** [ASCII 165] convertidas em equivalentes de OEM.

Exemplo 4:

SQL Server Transfer Manager 6.0 com página de código OEM 850, de uma página de 850 código SQL Server para uma página de 850 código SQL Server.

Recolher esta tabelaExpandir esta tabela
Servidor de origemConversão de cliente do servidor de origemConversão de cliente para dest. servidorServidor de destino
190165 *190 **190

* [ASCII 165] convertidas em ANSI equivalentes.
** [ASCII 165] convertidas em equivalentes de OEM.

PARTE M: ODBC e ANSI para OEM conversões

Todos os clientes ODBC (aplicativos de GUI e de console) são clientes ANSI conforme definido pela especificação ODBC. Conversão somente ocorrerá com página de código não-ANSI SQL Servers. Os clientes ODBC ter três opções de conversão: nenhuma conversão, traduzir com página de código OEM, ou usar um conversor de página de código ODBC. Conversão com a página de código OEM funciona da mesma biblioteca de banco de dados ANSI para a conversão de OEM, em que a página de código OEM do cliente determina o que é armazenado no servidor. Essa opção é escolhida, selecionando ConvertOEM à caixa de seleção de caracteres ANSI na caixa de diálogo configuração de fonte de dados. Para usar um conversor de página de código ODBC, clique no botão Select na seção de conversão da caixa de diálogo Configurar fonte de dados, clique no conversor de página de código do Microsoft e, em seguida, selecione o conversor de página de código para usar. Esta opção substitui o OEM converter para caixa de seleção de caracteres ANSI e faz a conversão OEM acordo com para o conversor escolhido, em vez da página de código OEM. Todos os clientes ODBC são clientes ANSI e conversão somente ocorrerá com página de código não-ANSI SQLservers.

PART N: Exemplos de cliente MS Query ODBC

Exemplo 1:

SELECT do cliente do Microsoft Query de uma página de código ANSI SQL Server.

Recolher esta tabelaExpandir esta tabela
No servidorConversão de clienteNo cliente
165165 *165

* Como o cliente e servidor são ANSI, nenhuma conversão é executada independentemente de qual conversão é escolhido.

Exemplo 2:

SELECT do cliente do Microsoft Query com página de código OEM 437 e converter OEM para caractere ANSI ativado, de uma página de 437 código SQL Server.

Recolher esta tabelaExpandir esta tabela
No servidorConversão de clienteNo cliente
157165 *165

* Convertidas em ANSI equivalentes.

Exemplo 3:

SELECT de cliente do Microsoft Query com página de código OEM 437, converter OEM para caractere ANSI habilitado e o Windows Latino 1 (1252) / 850 conversor de página de código MS (Multilíngüe-Latino 1) de um código 850 página SQL Server.

Recolher esta tabelaExpandir esta tabela
No servidorConversão de clienteNo cliente
190165 *165

* Convertido em ANSI equivalente usando a página de código OEM 850 devido à conversor.

PARTE O: Outros relacionados código página artigos

Para obter mais informações sobre páginas de código e a opção AnsiToOem, consulte os seguintes artigos na Base de dados de Conhecimento da Microsoft:

75435 - Windows, Code Pages, and Character Sets  (http://support.microsoft.com/kb/75435/EN-US/ )
152980 - BUG: AnsiToOem Check Box Does Not Work in 6.0 Transfer Manager  (http://support.microsoft.com/kb/152980/EN-US/ )

A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 4.21a Standard Edition
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
Palavras-chave: 
kbmt kbinfo kbusage KB153449 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: 153449  (http://support.microsoft.com/kb/153449/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.