Je suis en train de migrer un certain nombre de bases de données d'ISO8859-1 à UTF-8. Pour adapter l'ancienne chaîne dans de nouvelles tables, j'ai pensé qu'il y a 3 options:
Je ne considère pas vraiment 1 une option, qui nous laisse avec 2 et 3. Quand 2 seront préférables sur 3? Je pense avoir vu des informations sur lesquelles certains personnages peuvent ne pas correspondre correctement du caractère graphique, mais cela semble fonctionner correctement pour les personnages de ISO8859-1. Outre cela, je manque quelque chose ou que graphique serait toujours de préférence sur le code de code32?
Le type de données GRAPHIC
semble être un reste de l'époque où il n'y avait pas de support unicode généralisé. C'était là pour faciliter le stockage de caractères à double octet. Essentition GRAPHIC(3)
équivaut à CHAR(3 CODEUNITS16)
.
En dehors de la sémantique de la longueur (1 octet vs. 2 caractères d'octets) (VAR)CHAR
et (VAR)GRAPHIC
sont fonctionnellement équivalents. Maintenant que vous avez la possibilité de spécifier les unités de longueur avec le type de données, je ne vois vraiment aucune raison d'utiliser les types GRAPHIC
.
Étant donné qu'un caractère UTF-8 peut occuper n'importe où entre 1 et 4 octets, l'utilisation d'une hypothèse de caractères à nombre fixe-de-plusieurs octets entraînerait un risque de troncature ou de gaspillage d'espace. Pour éviter ce dernier, vous pourriez envisager d'utiliser VARCHAR
au lieu de CHAR
si votre demande peut tolérer cela.