Unicode : concepts de base

Le stockage de données en plusieurs langues dans une même base de données est délicat à gérer avec uniquement des données de type caractère et des pages de codes. Il est également difficile de trouver une page de codes capable de stocker tous les caractères requis dans toutes les langues. De plus, il est difficile de garantir que les caractères spéciaux sont lus ou mis à jour correctement par les différents clients exécutant des pages de codes distinctes. Les bases de données qui prennent en charge des clients internationaux doivent toujours utiliser les types de données Unicode à la place des types de données non-Unicode.

Prenons par exemple une base de données de clients en Amérique du Nord qui doit prendre en charge trois langues principales :

  • noms et adresses en espagnol pour le Mexique ;

  • noms et adresses en français pour le Québec ;

  • noms et adresses en anglais pour les autres régions du Canada et les États-Unis.

Lorsque vous utilisez uniquement des colonnes de caractères et des pages de codes, assurez-vous que la page de codes installée sur la base de données gère les caractères dans les trois langues. Assurez-vous aussi que les caractères seront traduits correctement dans une langue lorsqu'ils seront lus par des clients exécutant une page de codes relative à une autre langue.

Avec l'essor d'Internet, il est plus important que jamais de prendre en charge des ordinateurs clients exécutant des paramètres régionaux différents. La sélection d'une page de codes pour les types de données prenant en charge l'ensemble des caractères requis par une audience internationale devient difficile.

Pour gérer les données de caractères dans des bases de données internationales, la manière la plus simple consiste à toujours utiliser les types de données Unicode nchar, nvarchar, et nvarchar(max), à la place de leurs équivalents non-Unicode char, varchar, et text.

Unicode est un standard en matière de correspondance de points de code avec des caractères. Comme il est conçu pour couvrir tous les caractères de toutes les langues du monde, il n'y a pas besoin de pages de codes différentes pour gérer des jeux de caractères différents. SQL Server prend en charge la norme Unicode, version 3.2.

Si toutes les applications qui fonctionnent avec des bases de données internationales utilisent également des variables Unicode à la place des variables non-Unicode, aucune conversion de caractère ne sera nécessaire dans le système. Les clients verront exactement les mêmes caractères dans les données que tous les autres clients.

SQL Server stocke toutes les données de texte du catalogue système dans des colonnes disposant des types de données Unicode. Les noms des objets de bases de données, tels que les tables, les vues et les procédures stockées, sont stockés dans des colonnes Unicode. Ceci permet de développer des applications en utilisant uniquement Unicode, et d'éviter ainsi tous les problèmes liés aux conversions de pages de codes.