Quelle est la différence entre l'assemblage et le jeu de caractères?

24

J'ai une question générale sur les bases de données. Nous utilisons généralement le terme collation avec des bases de données. Je voudrais savoir en quoi c'est différent du jeu de caractères. Je suppose que le classement est un sous-ensemble de jeux de caractères. Si c'est vrai, quel est le but du classement multiple sous un jeu de caractères.

Shameer
la source
Voir

Réponses:

27

Les jeux de caractères sont une liste de symboles. Si vous comparez ASCII à latin1 , avec latin1, vous pourrez écrire tous les mots américains car latin1 contient tous les caractères ASCII , qui sont suffisants pour écrire n'importe quel mot anglais. Au contraire, avec ASCII, vous ne pourrez pas écrire tous les mots de langues spécifiques d'Europe occidentale, car par exemple, des caractères comme «À», «ë», «õ», «Ñ» sont manquants.

La collation concerne la comparaison entre les personnages. Il définit un ensemble de règles pour comparer les caractères d'un jeu de caractères.

Dans MySQL, les classements sont souvent liés à une seule langue (par exemple 'latin1_swedish_ci', 'latin1_german1_ci', etc.). Lorsque vous commandez une requête de sélection, un mot commençant par «ö» sera placé entre deux mots commençant par «o» et «p» dans certaines langues (avec quelques collations). Mais avec un autre classement, ce caractère peut être placé complètement à la fin, ce qui rend la sélection résultante différente.

uloBasEI
la source
Merci, c'est presque clair maintenant. Je pense donc que la sélection du classement est une préoccupation sérieuse lors de la planification d'un site multilingue? Par exemple, si le classement est «latin1_swedish_ci», je n'obtiendrai pas le résultat attendu en traitant des langues unicode.
Shameer
1
Je vous suggère d'opter pour l'unicode ou vous finirez par avoir des problèmes à un moment donné (langues asiatiques par exemple). Le classement dépendra de la langue de l'utilisateur. C'est quelque chose que vous devez faire attention si vous voulez avoir un outil multilingue.
deadalnix
6

Comme la réponse précédente, le jeu de caractères est un ensemble de caractères (lettres, chiffres, idéogrammes, etc.) attribués à un numéro; pour pouvoir les voir, vous devez avoir la police (les petites "images" que nous lisons). Ils étaient importants en utilisant LatinX, car pour chaque X, le même nombre (octet) pouvait faire référence à un caractère différent.

De nos jours, il est plus important de sélectionner l'encodage: la norme est UTF-8, la représentation la plus réussie d'Unicode (compatible avec ASCII mais si flexible pour inclure toutes les langues, même chinois et japonais) et la norme W3C. En d'autres termes, il inclut tous les jeux de caractères.

Collation: c'est un mot à l'ancienne, dérivé du latin. Cela signifie: comparer une copie (manuscrit) avec l'original pour trouver des différences (erreurs ou modifications). C'était très utile dans le passé, mais maintenant c'est presque un archaïsme car nos documents et livres sont écrits à l'aide d'ordinateurs et la copie est toujours identique à l'original. Exemple: en italien (dérivé du latin) il y a le verbe "collazionare", mais il est dans les dictionnaires et personne ne l'utilise.

Ainsi, le classement définit le comportement des opérateurs de comparaison: =,>, <, <=,> = ...

Bien sûr, ces opérateurs sont utilisés pour décider si deux chaînes sont identiques ou si un mot est "plus grand" qu'un autre, très important si nous voulons trier. Les lettres ne sont pas dans le même ordre pour chaque langue, donc un mot peut être plus grand qu'un autre en utilisant un classement, mais pas en utilisant un autre. Voir [1] pour un exemple pratique.

  • les classements "bin" sont les plus stricts: SELECT "b" = "B" => FALSE

  • les classements "ci" ne sont pas sensibles à la casse: SELECT "b" = "B" => TRUE

  • le "général" a tendance à ignorer certaines différences: SELECT "a" = "à" => TRUE

  • d'autres sont spécifiques à une ou plusieurs langues. Exemple "suédois" (je ne sais pas pourquoi le suédois est souvent un défaut)

Je suis toujours à la recherche d'un site Web où le comportement de chaque collation est décrit en détail ... ces exemples sont dus à mon expérience.

[1] http://www.olcot.co.uk/sql-blogs/revised-difference-between-collation-sql_latin1_general_cp1_ci_as-and-latin1_general_ci_as

Francesco
la source
1
le suédois est la valeur par défaut dans certains morceaux de MySQL. Son héritage depuis la création de MySQL par une petite équipe en Suède en 1995
Chris Wood