Recursos internacionais do 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. Confira mais informações sobre a propriedade de conexão sendStringParametersAsUnicode em Definir 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. Eles são passados 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. Em casos raros em que o JDBC Driver precisar passar dados que fazem distinção de localidade em um formato localizado, o formatador correto é usado com a localidade padrão da JVM.
Suporte a ordenações
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 ordenações, confira Suporte a ordenações e a Unicode e Nomes 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 de resolvedor escritos para plataformas não Windows baseia-se nos padrões da Internet DSN e, portanto, é mais provável usar o formato Punycode IDNs, enquanto um servidor DNS baseados no Windows em uma rede privada pode ser configurado para permitir o uso de caracteres UTF-8 em uma base por servidor. Para obter mais informações, confira Suporte para caracteres Unicode.