Menu

Formati dei codici postali per paese: cifre, lettere e spazi

I formati dei codici postali variano da paese a paese: sole cifre, lettere mescolate, codici segmentati e luoghi senza alcun sistema postale. Ecco come gestirli.

Pubblicato

  • dati di test
  • indirizzo
  • codici postali

I formati dei codici postali sono una delle prime cose che un modulo internazionale sbaglia. Un campo che accetta qualche cifra e si ritiene a posto respingerà interi paesi, ne corromperà altri in silenzio e lascerà passare dati che nessun operatore postale riconoscerebbe. Le regole non sono complicate, ma sono locali, e non esiste un unico schema che copra il mondo intero.

Questo articolo esamina le principali famiglie di codici postali in uso, i luoghi che non ne hanno, le trappole ricorrenti legate agli zeri iniziali e alla lunghezza, e che cosa fare in un modulo o in un database perché i dati sopravvivano al contatto con utenti reali.

Le quattro famiglie di codici postali

La maggior parte dei codici postali rientra in una delle quattro forme generali. I confini sono sfumati — un paese può cambiare il proprio schema e un codice può appartenere a più di una famiglia — ma le famiglie sono un modo utile di pensare alla validazione.

  • Sole cifre di lunghezza fissa. Molti paesi usano una sequenza di cifre, comunemente da quattro a sei. La lunghezza è fissa all’interno del paese, il che rende praticabile un semplice controllo di lunghezza.
  • Cifre con una struttura fissa. I codici nordamericani si dividono in due parti, e la seconda parte è facoltativa nella pratica, quindi lo stesso indirizzo può avere una versione breve o una lunga.
  • Lettere mescolate a cifre. Canada, Regno Unito, Paesi Bassi e Irlanda sono esempi noti. Alcuni di questi alternano lettere e cifre con un ritmo fisso; altri raggruppano i caratteri in segmenti con significati distinti.
  • Codice d’area più punto di consegna. Regno Unito e Paesi Bassi sono gli esempi classici: il segmento iniziale identifica un distretto o una città, il segmento finale restringe a una via o a un piccolo gruppo di indirizzi.

Una quinta categoria conta altrettanto: i paesi e i territori che non hanno affatto un sistema di codici postali. Chiedere un codice postale lì non è un problema di validazione da risolvere, ma una domanda che non si sarebbe mai dovuta porre.

Quali paesi non hanno codici postali?

Diversi, comprese parecchie località a cui le persone spediscono abitualmente. Dove non esiste un sistema postale, un modulo che pretende un valore obbliga l’utente a inventarlo — e l’invenzione quasi universale è una sequenza di zeri o la ripetizione di una singola cifra. Il risultato è un database pieno di valori segnaposto che sembrano dati e non portano alcuna informazione.

La risposta pratica è in due parti. Primo, rendi il campo facoltativo in qualsiasi modulo che serva più di un paese, perché la facoltatività è l’unica regola corretta ovunque. Secondo, se un sistema a valle esige davvero un valore, genera un segnaposto evidente ed etichettalo come tale nelle note del dataset invece di far finta che sia un codice reale. Le pagine paese per i mercati che servi sono un modo rapido per vedere quali convenzioni valgano dove.

Perché gli zeri iniziali scompaiono

Un codice postale è un identificatore, non un numero. Gli identificatori vengono confrontati, uniti, ordinati e copiati — mai sommati, mai mediati, mai confrontati con un segno di maggiore. Eppure è estremamente comune trovare una colonna dei codici postali tipizzata come intero, e quella singola scelta distrugge gli zeri iniziali su cui molti schemi nazionali si basano.

Il danno è silenzioso. Un codice che inizia con zero diventa un codice più corto quando attraversa una colonna numerica, un foglio di calcolo, un campo numerico JSON o un sistema che elimina le cifre insignificanti. Nulla restituisce un errore. Il valore semplicemente smette di essere il codice che era, e una successiva ricerca postale fallisce per motivi che sembrano non avere alcun rapporto con l’importazione che li ha causati.

Lo stesso ragionamento vale per i separatori. Alcuni formati nazionali vengono convenzionalmente scritti con uno spazio tra i segmenti, e gli utenti li digitano in modo incoerente. Memorizza la forma canonica senza il separatore, oppure memorizza il separatore in modo coerente, ma esegui la normalizzazione al confine e poi non toccarla più.

Codici postali e aree amministrative sono la stessa cosa?

No, e la confusione causa bug reali. Un codice postale descrive un percorso di consegna, non un confine governativo. Le aree di consegna e le aree amministrative si sovrappongono, ma non coincidono: un codice postale può coprire parti di due città, e una città può estendersi su più codici. I codici vengono riassegnati quando i percorsi cambiano, senza che nessuno ridisegni una provincia.

Ciò significa che non puoi ricavare con certezza una città o una regione da un codice postale. Puoi usare un codice postale come prova debole — di solito rientra in un intervallo noto per una regione, e una discordanza tra una regione e un codice postale è un forte segnale che almeno uno dei due è stato digitato male. Trattalo come un controllo che vale la pena eseguire, non come una ricerca autorevole.

È anche per questo che la validazione basata sul prefisso, che funziona bene in alcuni paesi, non è trasferibile. Una regola sul prefisso codifica una geografia di consegna, e la geografia di consegna di ogni paese è diversa. Il quadro più ampio è trattato nella guida alla validazione e normalizzazione degli indirizzi.

I codici postali nei moduli reali

Alcune abitudini mantengono un modulo onesto tra i paesi.

  • Rendi il campo facoltativo a meno che tu non sia certo, per un determinato paese, che un codice esista e sia obbligatorio.
  • Cambia l’etichetta e il testo di aiuto in base al paese selezionato, poiché la forma di un codice valido non è trasferibile.
  • Accetta in input sia la forma con spazi sia quella senza, e normalizza su una delle due per la memorizzazione.
  • Non imporre una lunghezza fissa a livello globale. Una lunghezza fissa è difendibile solo una volta noto il paese.
  • Non convertire in maiuscolo in silenzio se uno schema è sensibile alle maiuscole in qualche altro sistema; decidi una forma canonica e applicala con coerenza.

Un esempio pratico della stessa stringa di cifre che supera la regola di un paese e fallisce quella di un altro è nella guida alla struttura degli indirizzi statunitensi, dove sono descritte le forme a cinque cifre e quella estesa.

Per gli sviluppatori: colonne, vincoli e selettori di paese

Memorizza un codice postale come testo, di dimensione generosa, senza alcuna coercizione numerica in nessun punto del percorso. Tra otto e dodici caratteri è comodo per ogni schema in uso generale, e lo spazio extra non costa nulla rispetto a una migrazione futura. Elimina gli spazi bianchi circostanti in input, decidi se mantenere gli spazi interni e applica quella decisione in un unico punto del codice anziché in ogni consumatore.

Tieni sempre il codice paese accanto al codice postale. Un codice postale senza il suo paese è ambiguo, e nessun singolo insieme di regole di validazione vi si applica. Quando il paese cambia in un’interfaccia utente, svuota o rivalida il campo del codice postale invece di lasciare un valore che era stato verificato secondo le regole del paese precedente.

Infine, sii preparato al cambiamento. I formati vengono estesi, vengono introdotti nuovi codici, e uno schema che oggi sembra fisso può domani acquisire una variante. Una regola di validazione dovrebbe essere abbastanza severa da intercettare gli errori di battitura evidenti e abbastanza permissiva da ammettere un formato che non avevi previsto. Quando un codice non supera la validazione, registra il valore che hai rifiutato — mai l’intero record — così puoi distinguere una regola sbagliata da un input sbagliato.

Passi successivi

Esamina una colonna dei codici postali nel tuo schema e verifica se è testo, se tollera gli zeri iniziali e se il codice paese la accompagna. Poi costruisci un piccolo insieme di fixture che includa un paese di sole cifre, un paese con lettere e cifre, un codice segmentato e un paese senza alcun sistema postale, e falle passare attraverso il tuo modulo. Il generatore di indirizzi produce codici nella forma locale di ogni paese che copre, il che rende quella serie di fixture rapida da assemblare. I codici prodotti per una fixture sono sintetici per costruzione: esercitano il formato senza puntare a un’area di consegna reale, e nessuno di essi dovrebbe finire su un pacco.

Continua a leggere

Guide su Generatore di indirizzi falsi