Partager via


Traduction automatique de données caractères

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 d’interprétation des valeurs stockées dans SQL_C_CHAR, char, varchar ou objets texte . Si le serveur et le client ont des adresses ACL différentes, SQL_C_CHAR données du client peuvent être interprétées comme un caractère différent sur le serveur s’il est utilisé dans les colonnes, variables ou 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 codes 437 et est interprété comme le signe yen (>) sur un ordinateur exécutant la page de codes 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é AutoTranslate du pilote ODBC SQL Server Native Client tente de réduire les problèmes liés au déplacement de données de caractères entre un client et un serveur qui ont des pages de code différentes. AutoTranslate peut être défini 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.

Lorsque AutoTranslate est défini sur « non », aucune conversion n’est effectuée sur les données déplacées entre les variables SQL_C_CHAR sur le client et char, varchar ou les colonnes de texte , les variables ou les paramètres d’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.

Lorsque AutoTranslate est défini sur « oui », le pilote ODBC SQL Server Native Client utilise Unicode pour convertir les données déplacées entre les variables SQL_C_CHAR sur le client et les colonnes de texte, varchar ou texte , variables ou paramètres dans une base de données SQL Server :

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

  • Lorsque les données sont envoyées à partir d’une colonne char, varchar ou texte, d’une variable ou d’un paramètre dans une base de données SQL Server vers une variable SQL_C_CHAR sur le client, le pilote ODBC SQL Server Native Client effectue d’abord une conversion de caractère en Unicode à l’aide de l’ACP du serveur, puis d’Unicode vers 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 SQL_C_CHAR variables clientes et unicode nchar, nvarchar ou ntext colonnes, variables ou paramètres dans les bases de données SQL Server.

  • Déplacement de données entre unicode SQL_C_WCHAR variables clientes et caractères char, varchar ou colonnes de texte, variables ou paramètres dans les 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