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)
@+
]]>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
@+
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