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 o comportamento 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 | Reduzir tudo

Sumário

Este artigo explica páginas de código no SQL Server e como inserir ou obtenção de dados é afectado por activar ou desactivar a definição AutoAnsiToOem.

Uma página de códigos, também conhecido como um carácter definido, é um conjunto de 256 em maiúsculas e minúsculas, números e símbolos. Caracteres imprimíveis dos primeiros 128 valores são iguais para todas as opções de conjunto de caracteres. Últimos 128 caracteres, por vezes referidos como caracteres expandidos, diferem de conjunto para conjunto. Página de códigos predefinida para o SQL Server 4. 21a é página de códigos 850 (multilíngue). A predefinição para o SQL Server 6.0 e 6.5 é ISO 8859-1 (Latim-1 ou ANSI), também conhecido como página de códigos 1252. A página de códigos para o SQL Server determina os tipos de caracteres do SQL Server reconhece na base de dados e os resultados que devolve o SQL Server para consultas que envolvem as comparações de caracteres.

Tenha em atenção que a página de códigos do SQL Server é diferente da página de código do sistema operativo. Sistemas operativos 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 definições de país. Para o Windows NT em inglês dos Estados Unidos e Windows 95, a página de códigos ANSI predefinida é 1252 e a página de códigos OEM é 437 (Estados Unidos Em inglês). MS-DOS só tem uma página de código OEM. Para inglês (e.u.a.), esta página de códigos é 437 por predefinição. Windows 3.x é executado como uma extensão para MS-DOS e tem uma página de código ANSI 1252 por predefinição. Consola do Windows NT internamente é unicode; no entanto, este é um caso especial e tem de aparecer a ser executado numa página de código MS-DOS. Deste modo, as aplicações de consola no Windows NT eficazmente executadas a página de códigos OEM do computador. No entanto, é necessária qualquer linha de comandos são parâmetros passados para a aplicação da consola na página de códigos ANSI em vez da página de códigos OEM e deste modo, a tradução do AnsiToOem pela aplicação de consola para passar correctamente os parâmetros para SQL Server.

A entrada de registo AutoAnsiToOem controla o comportamento de conversão predefinido quando são inseridos ou obter dados. Se AutoAnsiToOem estiver activada, a conversão está activado nos seguintes casos:
  • Clientes de ANSI para OEM servidores
  • Clientes de OEM para ANSI servidores
Se AutoAnsiToOem estiver desactivada, conversão está desactivada para todas as ligações.

Todos os clientes baseados no Windows (tais como ISQL/w, SQL Enterprise Manager, o Gestor de transferência, administrador de SQL e Gestor de objectos SQL) são considerados clientes ANSI. MS-DOS ou aplicações baseadas na consola tal como ISQL e BCP são consideradas os clientes do OEM. A excepção a esta é a opção de transferência de dados do Gestor de objectos, que funciona como um cliente de OEM.

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

A página de códigos OEM utilizada para converter caracteres depende da página de códigos OEM actual do sistema operativo do cliente. Por exemplo, com a opção AutoAnsiToOem activada, carácter ASCII 165 ([ASCII 165]) num servidor ANSI é convertido para ASCII 190 ([ASCII 165]) ao seleccionar a partir de um cliente de OEM com página de códigos 850 e 157 ASCII ([ASCII 165]) quando seleccionar a partir de um cliente de OEM com página de códigos 437.

Mais Informação

A tabela seguinte fornece uma descrição geral para o resto deste artigo:
Reduzir esta tabelaExpandir esta tabela
ParteDescrição
UMComo determinar a página de códigos do SQL Server
BActivar ou desactivar AutoAnsiToOem
CComo verificar a validade dos dados guardados
DO que acontece quando um carácter de uma página de códigos não está disponível outro
ELECTRÓNICOIntroduzir caracteres expandidos com um teclado dos e.u.a.
FComo alterar a página de códigos OEM do Windows NT e Windows 95
GComo alterar a página de códigos OEM do MS-DOS e Windows 3.x
HSugestões de cliente para dados consistente
IExemplos de Isql.exe MS-DOS
JExemplos de BCP.exe Win32
KExemplos de Isqlw.exe
LTransferir exemplos do ' Gestor de '
MODBC e de ANSI para OEM conversões
NExemplos de cliente do Microsoft Query ODBC
OOutros artigos relacionados de página de código

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

O procedimento armazenado sp_helpsort pode ser utilizado para localizar ordenação o SQL Server ordem e conjunto de caracteres.

Parte B: Activar ou desactivar AutoAnsiToOem

A entrada de registo AutoAnsiToOem pode ser activada ou desactivada seleccionando o ANSI automáticas à caixa de verificação de OEM no utilitário de configuração do cliente. No SQL Server 4. 21a, Automatic ANSI para OEM está desactivado por predefinição, enquanto que nas versões 6.0 e 6.5 está activada por predefinição.

PARTE C: Como verificar a validade dos dados guardados

A função de cadeia de Transact SQL ASCII(char_expr) pode ser utilizada para determinar o que é realmente guardado no servidor. Esta função mostra o valor de código ASCII o carácter mais à esquerda numa expressão do carácter. Por exemplo, se tiver guardado no servidor 850 caracteres "[ASCII 177]", seleccionar os dados de ISQL/w poderá mostrar caracteres "[ASCII 177]" (quando AutoAnsiToOem está activado) ou "[ASCII 241]" (quando AutoAnsiToOem estiver desactivado). No entanto, seleccionar ASCII(<column_name>) irá mostrar-lhe 241 (que é "[ASCII 177]" na página de códigos 850).

PARTE D: o que acontece quando um carácter de uma página de códigos não está disponível outro

Se uma conversão ocorre e um carácter na página de um código não estiver noutra disponível, o carácter obtém convertido para o mais próximo carácter equivalente na página de códigos. Por exemplo, é convertido 224 ASCII ("alfa") na página de códigos 437 97("a") na página de código ANSI. Quando o converter para página de códigos 437, receberá 97("a"). Este é um problema, porque talvez tenha perdido agora 224("alpha") original. Isto poderá potencialmente causar dados incorrectos sejam guardados no servidor, tal como acontece nos dois exemplos seguintes:

Exemplo 1:

Tem um servidor de OEM no qual está a inserir dados a partir de um cliente de ANSI e a opção AutoAnsiToOem está activada. Se o carácter que está a inserir é válido em ambas as páginas de código, serão guardados os dados correctos. No entanto, se o carácter é válido em ANSI, mas não no OEM, os dados correctos não serão guardados.

Exemplo 2:

Pode inserir dados para um servidor de ANSI a partir de um cliente de OEM e a opção AutoAnsiToOem está activada. Se o carácter que está a inserir é válido em ambas as páginas de código, serão guardados os dados correctos. No entanto, se o carácter válido no OEM e não no ANSI, em seguida, dados correctos não serão guardados.


PARTE E: Introduzir expandido caracteres com um teclado dos e.u.a.

Prima NUMLOCK e utilize o teclado numérico no lado direito do teclado. Para introduzir caracteres expandidos ANSI, mantenha premida a tecla ALT e, em seguida, escreva o código ASCII do carácter precedido por um zero (0). Para introduzir caracteres expandidos do OEM, mantenha premida a tecla ALT e escreva apenas o código ASCII do carácter. Por exemplo, para introduzir +, mantenha premida a tecla ALT e escreva 0165, ou escreva 157 (se a página de códigos OEM do cliente for 437) ou escreva 190 (se a página de códigos OEM do cliente for 850).

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

Para Windows NT 3.51, o método preferido de alterar a página de códigos OEM no Windows NT é alterar o idioma em internacional do painel de controlo. Para o Windows NT 4.0 ou Windows 95, a página de códigos OEM é escolhida durante a configuração inicial.

Além disso, é possível alterar página de códigos OEM A alterando OEMCP e OEMHAL (apenas Windows NT) valores de registo na seguinte localização:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentlControlSet\Control\Nls\CodePage
				
estas alterações terão efeito após reiniciar o computador Windows NT ou Windows 95.

O valor OEMCP controla para o código de OEM que página para converter ANSI e o valor OEMHAL controla a apresentação de caracteres expandidos num prompt de comando. Alguns dos valores possíveis para estes valores de registo são:

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

Além de alterar o valor de registo OEMCP, esta definição também altera o valor OEMHAL, que controla a apresentação de caracteres expandidos num prompt de comando.

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

Para alterar a página de códigos para MS-DOS, consulte o capítulo 6, suporte de idioma nacional no MS-DOS Programming referência 6.0. Depois da página de código MS-DOS é alterada, tem de executar o programa de configuração para alterar respectivas tabelas de conversão ANSI-OEM para ANSI para OEM conversão.

H: parte sugestões de cliente de dados consistente

As seguintes sugestões ajudará a garantir que os dados armazenados no SQL Server são armazenados acordo com para a página de código de SQL Server em vez de página de códigos do cliente, que normalmente é a causa dos dados incorrectos.

Clientes do MS-DOS: MS-DOS uma vez que só tem uma página de código OEM e nenhuma página de código ANSI, não conversões são efectuadas. O cliente irá sempre armazenar dados no servidor com página de códigos OEM do cliente, para a página de códigos do SQL Server deve ser definida para corresponder a página de códigos do cliente.

Clientes OEM e ANSI: Se o computador com o SQL Server não está a utilizar a página de códigos ANSI, alterar OEM código de página o cliente para corresponder a página de código de SQL Server e activar a conversão AutoAnsiToOem. Se o computador com o SQL Server está a utilizar a página de códigos ANSI, basta Active a conversão AutoAnsiToOem.

Seguem-se excepções para as sugestões acima:


  • Para o cliente Win32 BCP.exe importar para um servidor de SQL ANSI, altere página de códigos do cliente para corresponder a página de código que os dados foi criados com.
  • Para o cliente Win32 BCP.exe exportação de um servidor de SQL ANSI, altere página de códigos do cliente para a página de código do SQL Server serão importados os resultados da exportação para. Por exemplo, para importar para um servidor de SQL com página de códigos 850, altera página de códigos o cliente 850.
  • Para o Gestor de transferência do SQL Server 4.2 x e 6.0 cliente, alterar página de códigos do cliente para corresponder a página de códigos da página de código não ANSI SQL Server, se ambos os servidores SQL não estiverem a utilizar a página de códigos ANSI. A tabela seguinte resume isto:

    Reduzir esta tabelaExpandir esta tabela
    Página de código de origem do SQL ServerPágina de código do destino do SQL ServerPágina de código de cliente para utilizar
    ANSI437437
    850ANSI850
    850850850
    437850*

    * Quando transferir entre páginas de código OEM, efectuar duas transferências:
    OEM1 to ANSI followed by ANSI to OEM2.
    					

PARTE I: MS-DOS Isql.exe exemplos

As tabelas em cada um dos seguintes exemplos mostram os equivalentes decimais do carácter em vários pontos.

INSERT e SELECT do carácter com o cliente Isql.exe MS-DOS com uma página de código OEM 437 para um código 437 entre páginas do SQL Server.

Reduzir esta tabelaExpandir esta tabela
OperaçãoNo clienteConversão de clienteNo servidor
INSERIR157157 *157
SELECCIONE157157 *157

* O valor nunca é alterado de 157, uma vez que os clientes de MS-DOS não efectuam conversões AnsiToOem.

PART J: Exemplos de BCP.exe Win32

Exemplo 1:

EXPORT e IMPORT da + carácter Win32 BCP.exe cliente com uma página de código OEM 850 para uma página de 850 códigos do SQL Server.

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

* Uma vez que o cliente e o servidor são OEM, é efectuada sem conversão.

Exemplo 2:

IMPORT de + carácter Win32 BCP.exe cliente com uma página de código OEM 437 e dados criados com página de códigos 437, numa página de código ANSI SQL Server.

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

* + convertido para o equivalente ANSI.

Exemplo 3:

EXPORT do cliente de Win32 BCP.exe carácter 165 com uma página de código OEM 437, de uma página de códigos ANSI SQL Server, para importar mais tarde para uma página de 437 códigos do SQL Server.

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

* + convertido para o equivalente de OEM.

Exemplo 4:

EXPORT de + carácter Win32 BCP.exe cliente com uma página de código OEM de 1252, de um ANSI código de página do SQL Server para importar mais tarde para o mesmo SQL Server.

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

* Uma vez que a página de códigos ANSI corresponde à página de códigos OEM no cliente, não ocorre nenhuma conversão.

PART K: Exemplos de Isqlw.exe

Exemplo 1:

Cliente INSERT e SELECT de Win16 ou Isqlw.exe Win32 para uma página de códigos ANSI SQL Server.

Reduzir esta tabelaExpandir esta tabela
OperaçãoNo clienteConversão de clienteNo servidor
INSERIR165165 *165
SELECCIONE165165 *165

* Uma vez que o cliente e o servidor são ANSI, é efectuada sem conversão.

Exemplo 2:

Cliente INSERT e SELECT de Win16 ou Win32 ISQLW.EXE com página de códigos 437 OEM numa página de 437 códigos do SQL Server.

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

* [ASCII 165] convertidos equivalente de OEM.
** [ASCII 165] convertidos equivalente ANSI.

Tamanho parte transferir exemplos do ' Gestor de '

Exemplo 1:

SQL Server transferência Manager 6.0 entre duas página de códigos ANSI SQL Server.

Reduzir 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

* Uma vez que o cliente e o servidor são ANSI, é efectuada sem conversão.

Exemplo 2:

SQL Server transferência Gestor 6.0 com OEM página de códigos 437, de uma página de 437 códigos do SQL Server para um ANSI código de página do SQL Server.

Reduzir 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] convertidos equivalente ANSI.
** Porque o cliente e o servidor são ANSI é efectuada sem conversão.

Exemplo 3:

SQL Server transferência Manager 6.0 com página de códigos 850, OEM de um ANSI código de página do SQL Server para uma página de 850 códigos do SQL Server.

Reduzir 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

* Porque o cliente e o servidor são ANSI é efectuada sem conversão.
** [ASCII 165] convertidos equivalente de OEM.

Exemplo 4:

SQL Server transferência Manager 6.0 com página de código OEM 850, de uma página de 850 códigos do SQL Server para uma página de 850 códigos do SQL Server.

Reduzir 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] convertidos equivalente ANSI.
** [ASCII 165] convertidos equivalente de OEM.

PART M: ODBC e ANSI para OEM conversões

Todos os clientes ODBC (aplicações de consola e GUI, Graphical User Interface) são clientes de ANSI, conforme definido pela especificação de ODBC. Conversão só irá ocorrer com página de código não ANSI SQL Server. Clientes ODBC tem três opções de conversão: sem conversão, converter com página de código OEM ou utilizar um conversor de página de código de ODBC. Conversão com a página de códigos OEM funciona como ANSI de biblioteca de base de dados para conversão de OEM, de que a página de códigos OEM do cliente determina o que é armazenado no servidor. Esta opção for escolhida seleccionando ConvertOEM caixa de verificação de caracteres ANSI na caixa de diálogo Configuração da origem de dados. Para utilizar um conversor de página de código de ODBC, clique no botão Seleccionar a secção conversão da caixa de diálogo programa de configuração da origem de dados de, faça clique sobre o conversor de página de códigos de MS e, em seguida, seleccione o conversor de página de código a utilizar. Esta opção substitui o OEM converter caixa de verificação de caracteres ANSI e faz a conversão de OEM acordo com o conversor seleccionado, em vez da página de código OEM. Todos os clientes ODBC são clientes ANSI e conversão só ocorrerá com página de código não ANSI SQLservers.

PART N: Exemplos de cliente MS Query ODBC

Exemplo 1:

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

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

* Dado que o cliente e servidor são ANSI, é efectuada sem conversão independentemente conversão é seleccionada.

Exemplo 2:

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

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

* Convertidos equivalente ANSI.

Exemplo 3:

SELECT do cliente do Microsoft Query com página de códigos OEM 437, converter OEM para ANSI carácter activada e o Windows Latim-1 (1252) / 850 tradutor de página de códigos MS (Multilingual-Latim 1) a partir de um código 850 página do SQL Server.

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

* Convertido para ANSI equivalente utilizando 850 página de código OEM devido a tradução.

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

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 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: 153449  (http://support.microsoft.com/kb/153449/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.