Utilisation d'Unicode dans des applications globalisées
Vous pouvez insérer ou extraire des données Unicode. Les données sont converties de manière transparente dans la base de données et les programmes client. Cette opération garantit l'indépendance des programmes client vis-à-vis du jeu de caractères de la base de données et du jeu de caractères national.
Voir aussi :
-
Guide de support à la globalisation Oracle Database, pour plus d'informations sur la programmation SQL et PL/SQL avec Unicode
-
Guide de support à la globalisation Oracle Database, pour obtenir des informations générales sur la programmation avec Unicode
Représentation de littéraux de chaîne Unicode dans SQL et PL/SQL
Vous pouvez employer trois méthodes différentes pour représenter un littéral de chaîne Unicodes dans SQL ou PL/SQL, comme illustré dans les exemples suivants.
-
N'string'
Exemple :
N'résumé'.Limites : reportez-vous à la rubrique "Prévention de perte de données lors de la conversion d'un jeu de caractères".
-
NCHR(number)
La fonction SQL NCHR renvoie le caractère dont l'équivalent binaire est un nombre dans le jeu de caractères national. Le type de données du caractère renvoyé est NVARCHAR2.
Exemple :
NCHR(36)représente $ dans le jeu de caractères national par défaut (AL16UTF16).Limites : la portabilité de la valeur de NCHR(numéro) est limitée aux applications qui utilisent le même jeu de caractères nationaux.
-
UNISTR('string')
La fonction SQL UNISTR convertit la chaîne en jeu de caractères national.
Pour la portabilité et la préservation des données, Oracle recommande que la chaîne ne contienne que des caractères ASCII et des valeurs d'encodage Unicode. Une valeur d'encodage Unicode se présente sous la forme \xxxx, où xxxx est la quantité hexadécimale de valeur de code d'un caractère dans le format d'encodage UCS-2.
Exemple :
UNISTR('G\0061ry')représente 'Gary'Les caractères ASCII sont convertis dans le jeu de caractères de la base de données, puis dans le jeu de caractères national. Les valeurs d'encodage Unicode sont directement converties dans le jeu de caractères national.
Voir aussi :
-
Guide du support à la globalisation Oracle Database, pour plus d'informations sur les littéraux de type chaîne Unicode
-
Manuel Oracle Database SQL Language Reference, pour plus d'informations sur la fonction NCHR
-
Manuel Oracle Database SQL Language Reference, pour plus d'informations sur la fonction UNISTR
Prévention de perte de données lors de la conversion d'un jeu de caractères
En tant que partie d'une instruction SQL ou PL/SQL, un littéral (avec ou sans préfixe N) est encodé dans le même jeu d'éléments que le reste de l'instruction. Côté client, l'instruction est encodée dans le jeu de caractères du client qui est déterminé par le paramètre NLS_LANG. Côté serveur, l'instruction est encodée dans le jeu de caractères de base de données.
Lorsque l'instruction SQL ou PL/SQL est transférée du client vers la base de données, son jeu de caractères est converti en conséquence. Si le jeu de caractères de base de données ne comporte pas tous les caractères utilisés par le client dans les littéraux de textes, les données sont alors perdues lors de cette conversion. Les littéraux de chaînes NCHAR sont plus vulnérables que ceux de texte CHAR car ils sont conçus pour être indépendants du jeu d'attributs de base de donnée.
Pour éviter la perte de données en cas de conversion dans un jeu de caractères de base de données incompatible, vous pouvez activer la fonctionnalité de remplacement littéral NCHAR. Pour plus d'informations, reportez-vous au Guide de support à la globalisation Oracle Database.