Cette page a été traduite automatiquement. Lisez l'original en anglais. English

Bibliothèque IBSurgeon

Corrections dans Firebird 2.5 concernant le charset de la chaîne de connexion

Auteur : Adriano dos Santos Fernandes [email protected]

Date : 2008-12-15

Avant FB 2.5, les noms de fichiers utilisés dans la chaîne de connexion sont toujours transmis du client au

serveur sans aucune conversion. Sur le serveur, ces noms de fichiers sont utilisés avec les fonctions API du système d’exploitation sans

aucune conversion non plus. Cela crée une situation où les noms de fichiers utilisant des caractères non-ASCII ne

s’interopèrent pas bien lorsque le client et le serveur sont sur des systèmes d’exploitation différents, ou même sur le même système d’exploitation utilisant des

pages de codes différentes.

Le problème est résolu dans FB 2.5 de la manière suivante :

Le nom de fichier est considéré, par défaut, comme étant sur la page de codes du système d’exploitation.

Un nouveau DPB est introduit, nommé isc_dpb_utf8.filename. Sa signification est de modifier la règle ci-dessus, afin que FB

considère le nom de fichier passé comme étant en UTF-8.

Si un client v2.5 (ou plus récent) est en communication avec un serveur distant plus ancien que v2.5, et que

isc_dpb_utf8.filename a été utilisé, le client convertit le nom de fichier de l’UTF-8 vers la page de codes du client et transmet ce nom de fichier au serveur. Le client supprime le DPB isc_dpb_utf8.filename.

Cela garantit la compatibilité ascendante lorsque les personnes utilisent la même page de codes sur le client et le système d’exploitation du serveur.

Si un client v2.5 (ou plus récent) est en communication avec un serveur v2.5 (ou plus récent), et que

isc_dpb_utf8.filename n’a pas été utilisé, le client convertit le nom de fichier de la page de codes du système d’exploitation vers l’UTF-8 et insère le DPB isc_dpb_utf8.filename. Si isc_dpb_utf8.filename a été utilisé, le client transmet simplement

le nom de fichier d’origine dans le DPB au serveur. Ainsi, le client transmet toujours au serveur

un nom de fichier en UTF-8 et le DPB isc_dpb_utf8.filename.

Le nom de fichier reçu sur le serveur est soumis aux mêmes règles que ci-dessus. Mais notez que le client v2.5

peut automatiquement convertir le nom de fichier et insérer le DPB. Les clients plus anciens que v2.5 ne le font pas,

donc les noms de fichiers reçus seront considérés comme étant sur la page de codes du serveur. Nous garantissons à nouveau la

compatibilité ascendante lorsque les pages de codes du client et du serveur sont identiques.

La page de codes du système d’exploitation et l’UTF-8 peuvent ne pas être le meilleur choix pour les noms de fichiers. Par exemple, si vous aviez un

script ISQL (ou un autre outil) et que ce script utilise un autre jeu de caractères de connexion. Vous ne pourriez pas

modifier correctement un script (ou tout autre fichier) en utilisant plusieurs jeux de caractères (pages de codes). Vous pouvez donc désormais

encoder tout caractère Unicode sous forme de caractères ASCII dans le nom de fichier de la chaîne de connexion. Cela est

accompli en utilisant le symbole #. C’est un préfixe pour un numéro de point de code Unicode (au format hexadécimal,

comme la notation U+XXXX). Vous devez l’écrire de cette manière : #XXXX avec X étant 0-9, a-f, A-F.

Si vous voulez utiliser le # littéral, vous pouvez utiliser ## ou #0023 (le numéro de point de code correspondant).

Ce caractère est interprété avec cette nouvelle sémantique sur le serveur même si le client est plus ancien

que v2.5.

La page de codes du système d’exploitation utilisée pour les conversions est :

- Windows : La page de codes ANSI Windows

- Autres : UTF-8

Mis à jour pour 2.5 Beta 2 : 2008-07-11

Ces règles sont désormais également valables pour les éléments de chaîne DPB.