Partager via


Traduction automatique de données caractères

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Les données de caractères, telles que les variables de caractères ANSI déclarées avec des SQL_C_CHAR ou des données stockées dans SQL Server à l’aide des types de données char, varchar ou texte, ne peuvent représenter qu’un nombre limité de caractères. Les données caractères stockées à l'aide d'un octet par caractère ne peuvent représenter que 256 caractères. Les valeurs stockées dans les variables SQL_C_CHAR sont interprétées à l'aide de la page de codes ANSI (ACP) de l'ordinateur client. Les valeurs stockées à l’aide de types de données char, varchar ou texte sur le serveur sont évaluées à l’aide de l’ACP du serveur.

Si le serveur et le client ont le même ACP, ils n’ont aucun problème à interpréter les valeurs stockées dans les objets SQL_C_CHAR, char, varchar ou texte . Si le serveur et le client ont des points de contrôle d’accès différents, SQL_C_CHAR données du client peuvent être interprétées comme un caractère différent sur le serveur s’ils sont utilisés dans des colonnes, des variables ou des paramètres char, varchar ou texte . Par exemple, un octet de caractère contenant la valeur 0xA5 est interprété comme le caractère Ñ sur un ordinateur à l’aide de la page de code 437 et est interprété comme le signe yen (¥) sur un ordinateur exécutant la page de code 1252.

Les données Unicode sont stockées à l'aide de deux octets par caractère. Tous les caractères étendus étant couverts par la spécification Unicode, tous les caractères Unicode sont interprétés de la même façon par tous les ordinateurs.

La fonctionnalité de transfert automatique du pilote ODBC SQL Server Native Client tente de réduire les problèmes liés au déplacement des données de caractères entre un client et un serveur qui ont des pages de code différentes. La conversion automatique peut être définie dans la chaîne de connexion de SQLDriverConnect, dans la chaîne de configuration de SQLConfigDataSource ou lors de la configuration de sources de données pour le pilote ODBC SQL Server Native Client à l’aide de l’administrateur ODBC.

Quand autotranslate est défini sur « non », aucune conversion n’est effectuée sur les données déplacées entre SQL_C_CHAR variables sur le client et char, varchar, ou colonnes de texte, variables ou paramètres dans une base de données SQL Server. Les modèles binaires peuvent être interprétés différemment sur les ordinateurs client et serveur si les données contiennent des caractères étendus et que les deux ordinateurs ont des pages de codes différentes. Les données seront interprétées de la même façon si les deux ordinateurs ont la même page de codes.

Quand autotranslate a la valeur « oui », le pilote ODBC SQL Server Native Client utilise Unicode pour convertir les données déplacées entre SQL_C_CHAR variables sur le client et les colonnes char, varchar ou texte, variables ou paramètres dans une base de données SQL Server :

  • Lorsque des données sont envoyées à partir d’une variable SQL_C_CHAR sur le client vers une colonne, une variable ou un paramètre char, varchar ou texte dans une base de données SQL Server, le pilote ODBC passe d’abord de SQL_C_CHAR à Unicode à l’aide de l’ACP du client, puis d’Unicode en caractère à l’aide de l’ACP du serveur.

  • Lorsque des données sont envoyées à partir d’une colonne, d’un varchar ou d’une colonne de texte, d’une variable ou d’un paramètre d’une base de données SQL Server à une variable SQL_C_CHAR sur le client, le pilote ODBC SQL Server Native Client passe d’abord de caractère à Unicode à l’aide de l’ACP du serveur, puis d’Unicode à SQL_C_CHAR à l’aide de l’ACP du client.

Étant donné que toutes ces conversions sont effectuées par le pilote ODBC SQL Server Native Client s’exécutant sur le client, le serveur ACP doit être l’une des pages de code installées sur l’ordinateur client.

Le fait d'effectuer les conversions de caractères via Unicode garantit une conversion correcte de tous les caractères qui existent dans les deux pages de codes. Si, toutefois, un caractère existe dans une page de codes mais pas dans une autre, le caractère ne peut pas être représenté dans la page de codes cible. Par exemple, la page de codes 1252 a le symbole de marque déposée (®), tandis que la page de codes 437 ne l'a pas.

Le paramètre AutoTranslate n'a aucun effet sur ces conversions :

  • Déplacement de données entre des variables clientes SQL_C_CHAR caractères et des colonnes, variables ou paramètres Unicode nchar, nvarchar ou ntext dans SQL Server bases de données.

  • Déplacement de données entre des variables clientes Unicode SQL_C_WCHAR et des colonnes, variables ou paramètres de caractères, varchar ou texte dans des bases de données SQL Server.

Les données doivent toujours être converties lorsqu'elles sont déplacées du type caractère vers le type Unicode.

Voir aussi

Traitement des résultats (ODBC)
Prise en charge d'Unicode et du classement