Recursos internacionais do JDBC Driver

Baixar o JDBC Driver

Os recursos de internacionalização do Microsoft JDBC Driver para SQL Server incluem os seguintes itens:

  • Suporte para uma experiência completamente localizada nos mesmos idiomas que o SQL Server
  • Suporte para as conversões da linguagem Java para dados do SQL Server com distinção de localidade
  • Suporte a idiomas internacionais, independentemente do sistema operacional
  • Suporte para nomes de domínio internacionais (começando com o Microsoft JDBC Driver 6.0 para o SQL Server)

Tratando de dados de caracteres

Dados de caractere no Java são tratados por padrão como Unicode; o objeto de Java String representa dados de caracteres Unicode. No driver JDBC, a única exceção a esta regra são os métodos getter e setter de fluxo ASCII que são casos especiais porque usam fluxos de byte com a pressuposição implícita de páginas de código simples e conhecidas (ASCII).

Além disso, o driver JDBC fornece a propriedade de cadeia de conexão sendStringParametersAsUnicode. Essa propriedade pode ser usada para especificar que os parâmetros preparados para dados de caracteres sejam enviados como ASCII ou conjunto de caracteres multibyte (MBCS) em vez de Unicode. Para obter mais informações sobre a propriedade da cadeia de conexão sendStringParametersAsUnicode, consulte Definindo as Propriedades de Conexão.

Conversões de entrada de driver

Os dados de texto em Unicode que vêm do servidor não precisam ser convertidos. Ele é passado diretamente como Unicode. Os dados não Unicode que vêm do servidor são convertidos da página de código para os dados, no nível de coluna ou de banco de dados, para Unicode. O driver JDBC usa as rotinas de conversão da JVM (Máquina Virtual Java) para realizar estas conversões. Estas conversões são realizadas em todos os métodos getter de fluxo de caracteres e cadeia de caracteres com tipo.

Se a JVM não tiver o suporte apropriado à página de código para os dados do banco de dados, o driver JDBC vai gerar a exceção "Página de código XXX sem suporte no ambiente Java". Para resolver este problema, instale o suporte completo de caractere internacional exigido para essa JVM.

Conversões de saída de driver

Os dados de caractere que vão do driver para o servidor podem ser ASCII ou Unicode. Por exemplo, os novos métodos de caractere nacional JDBC 4.0, como os métodos setNString, setNCharacterStream e setNClob das classes SQLServerPreparedStatement e SQLServerCallableStatement sempre enviam os valores de parâmetro para o servidor em Unicode.

Por outro lado, os métodos da API de caracteres não nacionais, como os métodos setString, setCharacterStream e setClob das classes SQLServerPreparedStatement e SQLServerCallableStatement enviam os valores para o servidor em Unicode somente quando a propriedade sendStringParametersAsUnicode está definida como "true", que é o valor padrão.

Parâmetros não Unicode

Para obter o desempenho ideal com os tipos CHAR, VARCHAR ou LONGVARCHAR de parâmetros não Unicode, defina a propriedade de cadeia de conexão sendStringParametersAsUnicode como "false" e use métodos de caracteres não nacionais.

Problemas de formatação

Para data, hora e moedas, toda a formatação com os dados localizados é realizada no nível da linguagem Java usando o objeto Locale; e os vários métodos de formatação para tipos de dados Date, Calendar e Number. No raro caso em que o driver JDBC precise transmitir dados sensíveis à localidade em formato localizado, o formatador adequado será usado com a localidade padrão da JVM.

Suporte a agrupamentos

O JDBC Driver 3.0 dá suporte a todas as ordenações compatíveis com o SQL Server 2000 (8.x), o SQL Server 2005 (9.x) e as novas ordenações ou novas versões dos nomes de ordenação do Windows introduzidas no SQL Server 2008 (10.0.x).

Para obter mais informações sobre as regras de ordenação, consulte Regras de ordenação e suporte a Unicode e Nome de ordenação do Windows (Transact-SQL).

Como usar IDN (nomes de domínio internacionais)

O JDBC Driver 6.0 para o SQL Server dá suporte ao uso de nomes de domínio internacionalizados (IDNs) e pode converter um serverName Unicode para compatível com codificação ASCII (Punycode) quando solicitado durante a conexão. Se os IDNs forem armazenados no sistema de nome de domínio (DNS) como cadeias de caracteres ASCII no formato Punycode (especificado pela RFC 3490), habilite a conversão do nome do servidor Unicode definindo a propriedade serverNameAsACE como true. Caso contrário, se o serviço DNS é configurado para permitir o uso de caracteres Unicode, defina a propriedade de serverNameAsACE como falso (padrão). Para versões anteriores do driver JDBC, também é possível converter o serverName em Punycode usando os métodos IDN.toASCII do Java antes de definir essa propriedade para uma conexão.

Observação

A maioria dos softwares resolvedores escritos para plataformas que não sejam Windows baseia-se nos padrões DNS da Internet e, portanto, provavelmente usa o formato Punycode para IDNs, enquanto um servidor DNS baseado no Windows em uma rede privada pode ser configurado para permitir o uso de caracteres UTF-8 por servidor. Para obter mais informações, confira Suporte para caracteres Unicode.