Os formatos de CEP variam mais do que a maioria dos formulários supõe: existem países que usam apenas dígitos, países que misturam letras e dígitos, países que dividem o código em duas partes e países que simplesmente não têm esse conceito. Entender essa variedade evita os erros mais comuns de cadastro, de armazenamento e de teste. Aqui mostramos como os códigos se organizam, onde ficam as armadilhas e o que fazer na prática.
Por que não existe um formato único
Um código postal é uma ferramenta de triagem criada por cada serviço postal para o próprio território. Ele precisa refletir a geografia local, a densidade de endereços e a forma como a distribuição acontece. Dois países vizinhos podem ter sistemas completamente diferentes, e o mesmo país pode alterar o próprio sistema com o tempo.
Isso significa que a pergunta útil não é “quantos dígitos tem um CEP”, mas “quais formatos este formulário precisa aceitar”. Um cadastro internacional aceita de tudo; um cadastro nacional aceita um padrão só. Tratar os dois casos como o mesmo problema é a origem da maioria dos erros.
Códigos numéricos: por que o zero à esquerda se perde
A forma mais comum é uma sequência de dígitos. Três, quatro, cinco, seis ou mais posições aparecem pelo mundo, e alguns países acrescentam um sufixo separado por hífen ou espaço para indicar um trecho mais fino de entrega. É o caso do formato brasileiro, em que os algarismos são agrupados em duas partes, e o agrupamento é parte do padrão, não um enfeite.
O problema clássico é o zero à esquerda. Um código que começa com zero, guardado em um campo numérico, perde essa posição: o número vira outro número, e a diferença não aparece em lugar nenhum até alguém tentar usar o valor. Não existe aviso, não existe erro de validação — apenas um dado silenciosamente errado no banco.
A correção é sempre a mesma: guardar o código como texto. Nenhum cálculo é feito com um código postal, então não há motivo para tratá-lo como número. Exibir com a máscara local é uma questão de apresentação, e a normalização precisa saber que o zero inicial é significativo.
Como funcionam os códigos alfanuméricos?
Alguns países combinam letras e dígitos no mesmo código. O desenho costuma ter uma lógica interna: um trecho identifica a região e outro identifica o setor de entrega. No Canadá, o código alterna letra e dígito. No Reino Unido, o código tem duas partes de tamanhos diferentes, e a primeira identifica a área de distribuição. Na Holanda, a combinação de dígitos e letras é seguida por um sufixo que aponta para um trecho específico.
Essa variedade produz três armadilhas práticas:
- A validação por “somente dígitos” recusa um endereço correto.
- Converter o valor para maiúsculas muda o significado se o padrão local for sensível a caixa, e nem todo sistema é.
- Espaços e hífens internos fazem parte de alguns formatos e são apenas convenção em outros, então a comparação precisa ser feita sobre uma forma normalizada.
Existem países sem código postal?
Sim. Não é um defeito nem um atraso: é uma decisão, e em territórios pequenos ou com distribuição organizada de outra forma o código simplesmente não é necessário. Hong Kong e os Emirados Árabes Unidos são exemplos conhecidos, e há outros.
Para quem preenche um formulário, a consequência é imediata: se o campo é obrigatório e o país não tem código, não existe resposta correta. O que se faz na prática é usar um valor provisório combinado, algo como uma sequência curta de zeros, e registrar que aquele valor não é um código postal de verdade. O pior desfecho é o formulário obrigar e o cadastro guardar o provisório como se fosse um dado geográfico.
Para quem constrói o formulário, a regra é mais direta: a obrigatoriedade do campo depende do país selecionado. Um campo opcional para quem não usa códigos é mais honesto do que qualquer valor inventado.
Uma comparação rápida
| Característica | Exemplo de desenho | Cuidado principal |
|---|---|---|
| Apenas dígitos | sequência de três a seis algarismos, às vezes com sufixo | zero à esquerda e tamanho variável |
| Letras e dígitos | alternância entre letra e algarismo | conversão de caixa e espaços internos |
| Duas partes | área de distribuição mais setor | o separador faz parte da apresentação |
| Sem código postal | não existe | campo obrigatório sem resposta válida |
Repare que a coluna da direita não fala de formato, e sim de comportamento: cada desenho gera um erro diferente em quem trata todos os códigos como iguais.
Gerando exemplos coerentes por país
No gerador de endereços, o código postal não é sorteado solto: ele é montado a partir da divisão administrativa escolhida, seguindo as regras de prefixo daquela região. O resultado é um conjunto em que cidade, divisão e código combinam entre si, o que é exatamente o que falta quando alguém digita um exemplo à mão.
Isso importa porque um código plausível mas incoerente com a cidade produz um teste que passa no formato e falha na lógica de negócio. Para cenários de cadastro em português, vale comparar com a página de dados de endereço no Brasil, que mostra como o padrão local se organiza, e com endereços dos Estados Unidos quando o formulário precisa lidar com o formato de cinco dígitos e sua extensão opcional.
Para quem desenvolve: armazenar e validar códigos
Três decisões resolvem boa parte dos problemas antes que eles apareçam.
A primeira é o tipo do campo. Código postal é texto, em qualquer país, sem exceção. Se a modelagem já nasceu com um número inteiro, a migração é chata e vale fazer cedo.
A segunda é separar transformação de verificação. Normalizar (retirar espaços extras, aplicar a caixa adequada, padronizar a apresentação) é uma operação segura e reversível na lógica. Verificar se o código existe de verdade é outra coisa, muito mais restrita, como discute o texto sobre validação e normalização de endereço.
A terceira é a tabela de regras por país. Cada regra precisa dizer se o campo é obrigatório, quais formatos são aceitos e como o valor é exibido. E precisa permitir exceções, porque os sistemas postais mudam e um teste que assume “sempre seis dígitos” fica obsoleto sem aviso.
Próximos passos
Se você está montando um conjunto de testes, gere um exemplo por país no gerador de endereços em vez de reutilizar o mesmo código em todos os cenários, e inclua pelo menos um caso de país sem código postal. Se está revisando um formulário, confira hoje mesmo se o campo de código postal aceita zero à esquerda e letras — é a checagem de dois minutos que evita o retrabalho mais caro.