Compartilhar via


Tradução automática de dados de caracteres

Dados de caracteres, como variáveis de caractere ANSI declaradas com SQL_C_CHAR ou dados armazenados em SQL Server usando os tipos de dados char, varchar ou text, podem representar apenas um número limitado de caracteres. Os dados de caractere armazenados que usam um byte por caractere podem representar apenas 256 caracteres. Os valores armazenados em variáveis SQL_C_CHAR são interpretados usando a ACP (página de código ANSI) do computador cliente. Os valores armazenados usando tipos de dados char, varchar ou text no servidor são avaliados usando a ACP do servidor.

Se o servidor e o cliente tiverem o mesmo ACP, eles não terão problemas em interpretar os valores armazenados em objetos SQL_C_CHAR, char, varchar ou text . Se o servidor e o cliente tiverem ACPs diferentes, SQL_C_CHAR dados do cliente poderão ser interpretados como um caractere diferente no servidor se forem usados em colunas char, varchar ou text , variáveis ou parâmetros. Por exemplo, um byte de caractere que contém o valor 0xA5 é interpretado como o caractere ?? em um computador usando a página de código 437 e é interpretado como o sinal de iene (??) em um computador executando a página de código 1252.

Dados de Unicode são armazenados usando dois bytes por caractere. Todos os caracteres estendidos são abordados pela especificação de Unicode. Dessa forma, todos os caracteres Unicode são interpretados da mesma maneira por todos os computadores.

O recurso AutoTranslate do driver ODBC SQL Server Native Client tenta minimizar os problemas na movimentação de dados de caracteres entre um cliente e um servidor que têm páginas de código diferentes. AutoTranslate pode ser definido na cadeia de conexão do SQLDriverConnect, na cadeia de caracteres de configuração de SQLConfigDataSource ou ao configurar fontes de dados para o driver ODBC SQL Server Native Client usando o Administrador ODBC.

Quando AutoTranslate é definido como "não", nenhuma conversão é feita em dados movidos entre variáveis de SQL_C_CHAR no cliente e colunas, variáveis ou parâmetros char, varchar ou text em um banco de dados SQL Server. Os padrões de bit poderão ser interpretados de forma diferente nos computadores cliente e servidor se os dados contiverem caracteres estendidos e os dois computadores tiverem páginas de código diferentes. Os dados serão interpretados da mesma maneira se ambos os computadores tiverem a mesma página de código.

Quando AutoTranslate é definido como "sim", o driver ODBC SQL Server Native Client usa Unicode para converter dados movidos entre variáveis de SQL_C_CHAR no cliente e colunas, variáveis ou parâmetros char, varchar ou text em um banco de dados SQL Server:

  • Quando os dados são enviados de uma variável SQL_C_CHAR no cliente para uma coluna char, varchar ou text, variável ou parâmetro em um banco de dados SQL Server, o driver ODBC primeiro converte de SQL_C_CHAR para Unicode usando a ACP do cliente e, em seguida, de Unicode de volta ao caractere usando a ACP do servidor.

  • Quando os dados são enviados de uma coluna char, varchar ou text, variável ou parâmetro em um banco de dados SQL Server para uma variável SQL_C_CHAR no cliente, o driver ODBC SQL Server Native Client primeiro converte de caractere para Unicode usando a ACP do servidor e, em seguida, de Unicode de volta para SQL_C_CHAR usando a ACP do cliente.

Como todas essas conversões são feitas pelo driver ODBC SQL Server Native Client em execução no cliente, o ACP do servidor deve ser uma das páginas de código instaladas no computador cliente.

Fazer as conversões de caractere por Unicode assegura a conversão adequada de todos os caracteres que existem nas duas páginas de código. Se um caractere existir em uma página de código, mas não em outra, entretanto, o caractere não poderá ser representado na página de código de destino. Por exemplo, a página de código 1252 tem o símbolo de marca registrada (??), enquanto a página de código 437 não.

A configuração AutoTranslate não tem nenhum efeito sobre essas conversões:

  • Mover dados entre caracteres SQL_C_CHAR variáveis de cliente e colunas unicode nchar, nvarchar ou ntext, variáveis ou parâmetros em bancos de dados SQL Server.

  • Mover dados entre variáveis de cliente unicode SQL_C_WCHAR e caracteres char, varchar ou colunas de texto, variáveis ou parâmetros em bancos de dados SQL Server.

Os dados devem sempre ser convertidos quando movidos de caractere para Unicode.

Consulte Também

Processando resultados (ODBC)
Suporte a ordenações e a Unicode