Vous n'êtes pas identifié(e).

#1 13/02/2017 19:53:40

le choix de UTF8

Salut
Je voudrais savoir les pour et contres de uft8 sur les bases de données relationnelles et particulièrement de PostgreSQL.
Par ailleurs si quelqu'un peut me guider sur un explication assez claire sur les encodages, locales et collation.
Précisément le mot COLLATION! La phrase "Conceptuellement, toute expression d'un type de donnée qui est collatable a une collation" de la documentation de PostgreSQL est à mon avis très floue.
Merci d'avance
@+

Hors ligne

#2 14/02/2017 10:03:03

ruizsebastien
Membre

Re : le choix de UTF8

Bonjour,

A mon sens UTF8 est un encodage qui permet d'avoir l'ensemble des caractères présents dans toutes les langues (y compris pour le français les accents).
Pour les collations, c'est la manières dont on fait les tris (order by) car on ne tri pas de la même manière en français quand anglais par exemple.
Vous pouvez faire des tests avec des mots en minuscules, en majuscules, avec la première lettre en majuscule ou non et vous verrez que selon qu'on tri en français, en anglais ou en allemand, on n'obtient pas le même ordre de classement (la majuscule vient-elle avant la minuscule ? avant les chiffres ? c'est différent d'un pays à l'autre). On peut changer la collation quand on veut.
Pour les locales, elles sont paramétrées lors de la création de l'instance elles permettent comme pour les collations de définir l'ordre de tri mais aussi la manières d'écrire les nombres décimaux (séparateur de milliers, virgule ou point pour les décimales). Les locales dans postgresql s'appuient sur les locales présentes dans le système d'exploitation. Elles sont importantes dans les échanges entre les clients et le serveur.


Plus de lecture ici :
http://docs.postgresql.fr/9.6/charset.html
http://docs.postgresql.fr/9.6/collation.html


Cordialement,

Sébastien.

Hors ligne

#3 16/02/2017 15:49:37

Re : le choix de UTF8

Salut
Merci ruizsebastien.
En fait j'ai vu la réponse depuis sa date mais je creuse toujours.
Pouvez-vous m'aide à différencier les paramètres LC_COLLATE et LC_CTYPE
Je m'étais fait la conclusion suivante....

De façon générale
->encodage
    =encoding
    =characteres set
    =ensemble de caractères
->collation
    =ordre de tri de caracères (tout caractères     imprimable) + équivalence Majuscule et mminuscule + équivalence accent et sans accent
Dans PostgreSQL
->ENCODING=ensemble de caractères
->LC_COLLATE=ordre de tri des chaînes
->LC_CTYPE=collation=classification des caractère

mais je pense qu'il y a confusion sur LC_COLLATE et LC_CTYPE
Merci d'avance
@+

Dernière modification par alassanediakite (16/02/2017 16:06:12)

Hors ligne

#4 16/02/2017 17:09:02

ruizsebastien
Membre

Re : le choix de UTF8

De ce que je comprends LC_COLLATE et LC_CTYPE font le lien avec l'encodage et la collation du système d'exploitation (voir commande "locale" sur le serveur).
LC_COLLATE pour la comparaison de chaînes de caractères >> par exemple lors d'un order by
LC_CTYPE pour la classification et la conversion de caractères >> par exemple si on convertit étoile en majuscule, doit-on obtenir ETOILE ou ÉTOILE ?


Cordialement,

Sébastien.

Hors ligne

#5 11/04/2017 16:53:10

Re : le choix de UTF8

Salut
Merci ruizsebastien.
J'ai trouvé plus de précisions ici

ENCODING=encodage (stockage en nbre de bit)
LC_COLLATE=ordre de tri des chaînes
LC_CTYPE=ensemble de caractère (ou page de code de caractères)

@+

Hors ligne

Pied de page des forums