Fonctionnalités internationales du pilote JDBC

Télécharger le pilote JDBC

Les fonctionnalités d’internationalisation du Pilote Microsoft JDBC pour SQL Server incluent les éléments suivants :

  • Prise en charge d’une version complètement localisée dans les mêmes langues que SQL Server.
  • Prise en charge des conversions du langage Java pour les données SQL Server respectant les paramètres régionaux.
  • Prise en charge des langues internationales, quel que soit le système d’exploitation
  • Prise en charge des noms de domaine internationaux (à compter du pilote Microsoft JDBC 6.0 pour SQL Server)

Gestion des données caractères

Les données de type caractère dans Java sont traitées par défaut en tant qu’Unicode ; l’objet Java Stringreprésente des données de type caractère Unicode. Dans le pilote JDBC, les méthodes getter et setter du flux de données ASCII constituent la seule exception à cette règle ; il s'agit de cas à part, car ces méthodes utilisent des flux d'octets en se basant sur l'hypothèse implicite de pages de codes uniques et bien connues (ASCII).

En outre, le pilote JDBC fournit la propriété de chaîne de connexion sendStringParametersAsUnicode. Cette propriété peut être utilisée pour spécifier que les paramètres préparés pour les données caractères sont envoyés en tant que caractères ASCII ou en tant que jeu de caractères multioctets (MBCS), et non en tant que caractères Unicode. Pour plus d’informations sur la propriété de chaîne de connexion sendStringParametersAsUnicode, consultez Définir les propriétés de connexion.

Conversions entrantes du pilote

Les données de type texte Unicode provenant du serveur ne doivent pas être converties. Elles sont transmises directement en Unicode. Les données non-Unicode provenant du serveur sont converties en Unicode à partir de la page de codes des données, au niveau base de données ou colonne. Le pilote JDBC utilise les routines de conversion de machine virtuelle Java (Java Virtual Machine, JVM) pour effectuer ces conversions. Ces conversions sont effectuées sur toutes les méthodes getter des flux de données de type chaînes et caractères.

Si la machine virtuelle Java (JVM) ne prend pas en charge la page de codes appropriée pour les données de la base de données, le pilote JDBC lève l’exception suivante : « Page de codes XXX non prise en charge par l’environnement Java ». Pour résoudre ce problème, vous devez installer la prise en charge complète des caractères internationaux requise par cette machine virtuelle Java.

Conversions sortantes du pilote

Les données caractères allant du pilote au serveur peuvent être au format ASCII ou Unicode. Par exemple, les nouvelles méthodes JDBC 4.0 prenant en charge les caractères nationaux, comme les méthodes setNString, setNCharacterStream et setNClob des classes SQLServerPreparedStatement et SQLServerCallableStatement, envoient toujours leurs valeurs de paramètres au serveur au format Unicode.

Par ailleurs, les méthodes d’API basées sur des caractères non nationaux, comme les méthodes setString, setCharacterStream et setClob methods des classes SQLServerPreparedStatement et SQLServerCallableStatement, envoient leurs valeurs au serveur au format Unicode seulement quand la propriété sendStringParametersAsUnicode est définie sur « true », qui est la valeur par défaut.

Paramètres non Unicode

Pour garantir des performances optimales avec le type de paramètres non Unicode CHAR, VARCHAR ou LONGVARCHAR, affectez la valeur « false » à la propriété de chaîne de connexion sendStringParametersAsUnicode et utilisez les méthodes basées sur des caractères non nationaux.

Problèmes de mise en forme

Pour les dates, les heures et les devises, toute la mise en forme des données localisées est effectuée au niveau du langage Java avec l’objet Locale, et les différentes méthodes de mise en forme pour les types de données Date, Calendar et Number. Dans le cas, rare, où le pilote JDBC doit passer des données sensibles respectant les paramètres régionaux dans un format localisé, le programme approprié de mise en forme est utilisé avec les paramètres régionaux par défaut de la machine virtuelle Java.

Prise en charge du classement

Le pilote JDBC version 3.0 prend en charge tous les classements pris en charge par SQL Server 2000 (8.x) et SQL Server 2005 (9.x) ainsi que les nouveaux classements ou les nouvelles versions des noms de classements Windows introduits dans SQL Server 2008 (10.0.x).

Pour plus d’informations sur les classements, consultez Prise en charge d’Unicode et du classement et Nom de classement Windows (Transact-SQL).

Utilisation de noms de domaine internationaux (IDN)

Le pilote JDBC 6.0 pour SQL Server prend en charge l’utilisation de noms de domaine internationaux et peut convertir un nom de serveur Unicode en codage compatible avec le format ASCII (Punycode) si nécessaire pendant une connexion. Si les noms de domaines internationaux sont stockés dans le système DNS (Domain Name System) en tant que chaînes ASCII au format Punycode (spécifié par la RFC 3490), activez la conversion du nom de serveur Unicode en affectant la valeur « True » à la propriété serverNameAsACE. Sinon, si le service DNS est configuré pour autoriser l’utilisation de caractères Unicode, affectez la valeur « false » (valeur par défaut) à la propriété serverNameAsACE. Pour les versions antérieures du pilote JDBC, vous pouvez aussi convertir le nom du serveur au format Punycode avec les méthodes IDN.toASCII de Java avant de définir cette propriété pour une connexion.

Notes

La plupart des logiciels de résolution écrits pour les plateformes autres que Windows sont basés sur les normes DSN Internet. Il est donc plus probable qu’ils utilisent le format Punycode pour les noms de domaines internationaux, alors qu’un serveur DNS Windows sur un réseau privé peut être configuré pour autoriser l’utilisation des caractères UTF-8 en fonction du serveur. Pour plus d’informations, consultez Prise en charge des caractères Unicode.

Voir aussi

Présentation du pilote JDBC