L'internationalisation d'une base

Faire vivre plusieurs langues et plusieurs pays dans une base : encodage du serveur et du client, collation et ordre de tri, sensibilité à la casse, formats régionaux et fuseaux horaires.

  • 25 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Les chiffres
  5. Mises en situation

Quelques cartes du deck

  • Encodage du serveur : de quoi s'agit-il ?

    Voir la réponse

    Code qui fixe comment les caractères d'une base sont écrits en octets sur le disque. Il est choisi à la création de la base, le plus souvent UTF-8.

    Une base UTF-8 accepte tous les alphabets. Une base en Latin-1 refuse un caractère comme « œ » ou « € », qu'elle ne sait pas représenter.

  • Quelle est la sortie du dernier SELECT ?

    ```sql
    CREATE TABLE rdv (quand timestamptz);
    INSERT INTO rdv VALUES ('2025-07-01 12:00+00');
    SET timezone = 'America/New_York';
    SELECT quand FROM rdv;
    `

    • 2025-07-01 08:00:00-04
    • 2025-07-01 12:00:00+00
    • 2025-07-01 08:00:00-05
    • 2025-07-01 16:00:00-04
    Voir la réponse

    2025-07-01 08:00:00-04

    L'instant 12 h UTC est affiché dans le fuseau de la session. En juillet, New York est à l'heure d'été, UTC−4 : 8 h. Avec UTC−5 (heure d'hiver) on lirait 7 h.

  • Dans PostgreSQL, l'encodage et la collation par défaut d'une base se fixent à sa … ; ALTER DATABASE ne permet pas de les changer ensuite.

    Voir la réponse

    Dans PostgreSQL, l'encodage et la collation par défaut d'une base se fixent à sa création ; ALTER DATABASE ne permet pas de les changer ensuite.

    Changer d'encodage ou de collation passe par une nouvelle base, où l'on recharge les données avec pg_dump et pg_restore.

  • Encodage du client : de quoi s'agit-il ?

    Voir la réponse

    Code dans lequel une session échange ses textes avec le serveur, qui convertit à la volée entre lui et l'encodage de la base.

    Il se règle par session (SET client_encoding = 'LATIN1'). S'il ne dit pas la vérité sur les octets envoyés, la conversion fabrique des accents cassés.