Menu

Formats de codes postaux par pays : chiffres, lettres et espaces

Les formats de codes postaux varient d'un pays à l'autre : chiffres purs, lettres mêlées, codes segmentés et zones sans système postal du tout. Voici comment s'y adapter.

Publié le

  • données de test
  • adresse
  • codes postaux

Les formats de codes postaux sont l’une des premières choses qu’un formulaire international rate. Un champ qui accepte quelques chiffres et s’en contente rejettera des pays entiers, en corrompra d’autres en silence et laissera passer des données qu’aucun opérateur postal ne reconnaîtrait. Les règles ne sont pas compliquées, mais elles sont locales, et il n’existe aucun modèle unique qui couvre le monde entier.

Cet article passe en revue les principales familles de codes postaux en usage, les lieux qui n’en ont aucun, les pièges récurrents autour des zéros initiaux et de la longueur, et ce qu’il faut faire dans un formulaire ou une base de données pour que les données survivent au contact des utilisateurs réels.

Les quatre familles de codes postaux

La plupart des codes postaux appartiennent à l’une de quatre grandes formes. Les frontières sont floues — un pays peut changer de système, et un code peut relever de plusieurs familles — mais ces familles constituent une manière utile de penser la validation.

  • Chiffres purs d’une longueur fixe. De nombreux pays utilisent une suite de chiffres, généralement de quatre à six. La longueur est fixe au sein du pays, ce qui rend viable un simple contrôle de longueur.
  • Chiffres à structure fixe. Les codes nord-américains se scindent en deux parties, et la seconde est facultative en pratique, de sorte qu’une même adresse peut porter une version courte ou une version longue.
  • Lettres mêlées à des chiffres. Le Canada, le Royaume-Uni, les Pays-Bas et l’Irlande en sont des exemples familiers. Certains alternent lettres et chiffres selon un rythme fixe ; d’autres regroupent les caractères en segments aux significations distinctes.
  • Code de zone plus point de livraison. Le Royaume-Uni et les Pays-Bas en sont les exemples classiques : le segment initial identifie un district ou une ville, le segment final se resserre sur une rue ou un petit groupe d’adresses.

Une cinquième catégorie compte tout autant : les pays et territoires dépourvus de tout système de codes postaux. Y demander un code postal n’est pas un problème de validation à résoudre, mais une question qu’il n’aurait jamais fallu poser.

Quels pays n’ont pas de codes postaux ?

Assez nombreux, y compris plusieurs endroits où l’on envoie couramment du courrier. Là où il n’existe pas de système postal, un formulaire qui exige une valeur force l’utilisateur à en inventer une — et l’invention quasi universelle est une suite de zéros ou la répétition d’un même chiffre. Le résultat est une base de données pleine de valeurs fictives qui ressemblent à des données et ne portent aucune information.

La réponse pratique tient en deux volets. Premièrement, rendez le champ facultatif dans tout formulaire servant plus d’un pays, car le caractère facultatif est la seule règle correcte partout. Deuxièmement, si un système en aval exige vraiment une valeur, générez une valeur fictive évidente et étiquetez-la comme telle dans les notes du jeu de données plutôt que de prétendre qu’il s’agit d’un vrai code. Les pages pays des marchés que vous servez sont un moyen rapide de voir quelles conventions s’appliquent où.

Pourquoi les zéros initiaux disparaissent

Un code postal est un identifiant, pas un nombre. Les identifiants sont comparés, joints, triés et copiés — jamais additionnés, jamais moyennés, jamais comparés avec un signe supérieur à. Pourtant, il est extrêmement courant de trouver une colonne de codes postaux typée en entier, et ce seul choix détruit les zéros initiaux sur lesquels reposent de nombreux systèmes nationaux.

Les dégâts sont silencieux. Un code qui commence par zéro devient un code plus court lorsqu’il traverse une colonne numérique, un tableur, un champ numérique JSON ou un système qui supprime les chiffres non significatifs. Aucune erreur n’est signalée. La valeur cesse simplement d’être le code qu’elle était, et une recherche de code postal ultérieure échoue pour des raisons qui semblent sans rapport avec l’import qui les a causées.

Le même raisonnement s’applique aux séparateurs. Certains formats nationaux s’écrivent conventionnellement avec une espace entre les segments, et les utilisateurs les saisissent de manière incohérente. Stockez la forme canonique sans le séparateur, ou stockez le séparateur de façon cohérente, mais effectuez la normalisation à la frontière puis cessez d’y toucher.

Codes postaux et zones administratives sont-ils la même chose ?

Non, et cette confusion provoque de vrais bugs. Un code postal décrit un itinéraire de distribution, pas une frontière gouvernementale. Les zones de distribution et les zones administratives se recouvrent, mais ne coïncident pas : un code postal peut couvrir des parties de deux villes, et une ville peut s’étendre sur plusieurs codes. Les codes sont réaffectés lorsque les tournées changent, sans que personne ne redessine une province.

Cela signifie que vous ne pouvez pas déduire avec certitude une ville ou une région d’un code postal. Vous pouvez utiliser un code postal comme indice faible — il tombe généralement dans une plage connue pour une région, et une incohérence entre une région et un code postal est un signal fort qu’au moins l’un des deux a été mal saisi. Traitez-le comme un contrôle qui vaut la peine d’être fait, non comme une référence faisant autorité.

C’est aussi pourquoi la validation fondée sur le préfixe, qui fonctionne bien dans certains pays, ne se transpose pas. Une règle de préfixe encode une géographie de distribution, et la géographie de distribution de chaque pays est différente. Le tableau d’ensemble est traité dans le guide sur la validation et la normalisation des adresses.

Les codes postaux dans les formulaires réels

Quelques habitudes gardent un formulaire honnête d’un pays à l’autre.

  • Rendez le champ facultatif, sauf si vous êtes certain, pour un pays précis, qu’un code existe et qu’il est obligatoire.
  • Changez le libellé et le texte d’aide avec le pays sélectionné, car la forme d’un code valide n’est pas transposable.
  • Acceptez à la saisie les formes avec et sans espaces d’un code, et normalisez vers l’une des deux pour le stockage.
  • N’imposez pas une longueur fixe à l’échelle mondiale. Une longueur fixe n’est défendable qu’une fois le pays connu.
  • Ne mettez pas silencieusement en majuscules si un système se révèle sensible à la casse ailleurs ; choisissez une casse canonique et appliquez-la systématiquement.

Un exemple concret de la même suite de chiffres passant la règle d’un pays et échouant dans un autre figure dans le guide sur la structure des adresses américaines, où les formes à cinq chiffres et étendues sont décrites.

Pour les développeurs : colonnes, contraintes et bascules de pays

Stockez un code postal sous forme de texte, d’une taille généreuse, sans aucune conversion numérique nulle part dans le chemin. Huit à douze caractères conviennent à tous les systèmes d’usage général, et l’espace supplémentaire ne coûte rien comparé à une migration ultérieure. Supprimez les espaces environnants à la saisie, décidez si vous conservez les espaces internes, et appliquez cette décision à un seul endroit du code plutôt que chez chaque consommateur.

Gardez toujours le code pays à côté du code postal. Un code postal sans son pays est ambigu, et aucune règle de validation unique ne s’y applique. Lorsque le pays change dans une interface utilisateur, effacez ou revalidez le champ postal au lieu de laisser une valeur qui a été contrôlée selon les règles du pays précédent.

Enfin, préparez-vous au changement. Les formats s’étendent, de nouveaux codes apparaissent, et un système qui semble figé aujourd’hui peut acquérir une variante demain. Une règle de validation doit être assez stricte pour attraper les fautes de frappe évidentes et assez souple pour admettre un format que vous n’aviez pas anticipé. Lorsqu’un code échoue à la validation, journalisez la valeur rejetée — jamais l’enregistrement entier — afin de pouvoir distinguer une mauvaise règle d’une mauvaise saisie.

Étapes suivantes

Auditez une colonne de codes postaux de votre propre schéma et vérifiez si elle est de type texte, si elle tolère les zéros initiaux et si le code pays l’accompagne. Ensuite, construisez un petit jeu de tests comprenant un pays à chiffres uniquement, un pays à lettres et chiffres, un code segmenté et un pays sans système postal du tout, puis faites-le passer par votre formulaire. Le générateur d’adresses produit des codes à la forme locale de chaque pays qu’il couvre, ce qui rend ce jeu de tests rapide à assembler. Les codes produits pour un jeu de tests sont synthétiques par construction : ils exercent le format sans pointer vers une zone de distribution réelle, et aucun d’eux ne devrait finir sur un colis.

Continuer la lecture

Articles sur Générateur d'adresses fictives