Também disponível em: English · Español · Français · العربية
Códigos de países
ISO 3166-1, a zona raiz dos domínios e os indicativos da UIT, com pesquisa e sem esconder onde se contradizem.
O que são os códigos de países
Não existe «o» código de país, e essa é a primeira coisa útil a saber. A expressão designa pelo menos três registos distintos, mantidos por três organizações distintas para três fins distintos, e que não concordam entre si sobre o que conta como país.
A ISO 3166-1 é a norma em que quase toda a gente pensa. Dá a cada país três códigos: um de duas letras ou alfa-2 (PT), um de três letras ou alfa-3 (PRT) e um numérico de três algarismos (620). Há 249 entradas atribuídas oficialmente. O alfa-2 é o que se encontra todos os dias, nas etiquetas de idioma, nos formulários de envio e no sistema de domínios.
O sistema de domínios é o segundo registo. A IANA delega domínios de topo de duas letras a partir da zona raiz, e são 248: um número diferente, porque os dois registos divergem em quatro casos num sentido e em cinco no outro. O terceiro é a UIT, que atribui os indicativos telefónicos. São 205 indicativos distintos para 249 países, o que desde logo diz que a relação não é de um para um.
Esta tabela reúne todos, gerada a partir das fontes primárias em vez de copiada de outra tabela: os códigos são conferidos com o Unicode CLDR, os domínios vêm do ficheiro diário da zona raiz da IANA e os nomes dos países nas cinco línguas vêm do CLDR e não de uma ronda de tradução.
Como usar esta página
- Escreva na caixa de pesquisa aquilo que já souber. Encontra por nome do país, alfa-2, alfa-3, código numérico, domínio com ou sem ponto e indicativo telefónico. As correspondências exactas de código aparecem primeiro, portanto procurar «pt» põe Portugal no topo em vez de o enterrar sob os muitos nomes que contêm essas duas letras.
- Clique em qualquer código para o copiar. Todos os códigos da tabela são botões de cópia. Ao fazê-lo não é enviado nada para lado nenhum: a tabela inteira já está no seu navegador.
- Quando um código o surpreender, veja as três secções seguintes. Listam os quatro domínios que não são códigos ISO, os cinco códigos ISO sem domínio e todos os indicativos que chegam a mais de um país. São os casos que partem o código mal escrito, e são a razão de ser desta página.
Onde os registos divergem, e porquê
Uma regra cumpre-se sem uma única excepção: quando um país tem domínio de duas letras delegado, esse domínio é o seu alfa-2 em minúsculas. Não há país nenhum cujo domínio seja o código de outro. Vale a pena dizê-lo com clareza, porque as excepções estão todas do outro lado da relação: domínios sem código ISO por trás.
São exactamente quatro, e o curioso é que não há dois com a mesma explicação. O domínio .ac serve a Ilha de Ascensão, cujo código está reservado excepcionalmente na ISO 3166-1 em vez de atribuído oficialmente. O domínio .eu designa a União Europeia, que é um conjunto de países e não um país. O domínio .su era o da União Soviética e continua delegado mais de trinta anos depois de esse Estado ter deixado de existir. E .uk não é sequer um código ISO: o do Reino Unido é GB, e UK está reservado apenas para que nunca possa ser dado a mais ninguém.
Este último é o erro mais frequente no software que lida com códigos de país, porque .uk é um dos domínios mais visíveis da internet e GB é o valor que estará mesmo nos seus dados. Um sistema que tome o domínio e o código ISO por permutáveis acerta 244 vezes e falha com o Reino Unido.
No outro sentido, cinco códigos atribuídos oficialmente não têm domínio delegado: São Bartolomeu, Bonaire, o Saara Ocidental, São Martinho e as Ilhas Menores Distantes dos Estados Unidos. A base de dados da zona raiz da IANA marca cada um explicitamente como «Not assigned», o que é facto diferente de estar ausente: a entrada existe e regista que nada foi delegado.
Essas duas listas fecham certo, e é assim que os dados desta página são verificados. Pegue nos 249 códigos atribuídos oficialmente, tire os cinco sem domínio e ficam 244. Pegue nos 248 domínios delegados, tire os quatro que não são códigos ISO e ficam outra vez 244. Os dois registos coincidem em exactamente 244 entradas, e cada uma das nove linhas restantes tem uma razão documentada.
Um indicativo telefónico não é um país
O lado telefónico tem a sua própria armadilha, e faz mais estragos porque parece funcionar. A UIT atribui os indicativos a planos de numeração e não a países, portanto a relação é de muitos para um: 56 dos 249 países aqui presentes, ou seja 22,5%, partilham o indicativo com pelo menos outro.
O caso extremo é o +1, que chega a 25 territórios ISO distintos. Os Estados Unidos e o Canadá são os dois óbvios, mas também lá estão Porto Rico, a Jamaica, Barbados, as Baamas, a República Dominicana e outros dezoito, por pertencerem todos ao Plano de Numeração da América do Norte. Qualquer coisa que deduza o país a partir de um +1 inicial está a escolher entre vinte e cinco respostas.
As colisões pequenas são igualmente reais e mais fáceis de escapar. O +44 abrange o Reino Unido, Guernsey, a Ilha de Man e Jersey. O +39 abrange a Itália e a Cidade do Vaticano. O +7 abrange a Rússia e o Cazaquistão. O +212 abrange Marrocos e o Saara Ocidental. Se precisa de saber a que país pertence um número, o indicativo não chega, e nenhuma consulta a uma tabela o fará chegar: é preciso também o número nacional.
Há um território sem indicativo nenhum. As Ilhas Menores Distantes dos Estados Unidos têm código ISO atribuído oficialmente e aparecem em qualquer lista de países, e a UIT não tem entrada para elas. É um buraco genuíno e não um dado em falta, e esta página mostra-o como tal em vez de inventar um valor plausível.
Limites honestos
Esta tabela é um instantâneo. O ficheiro da zona raiz de onde foi gerada traz o seu próprio número de versão e a IANA actualiza-o diariamente; a ISO revê a 3166-1 quando os países mudam de nome ou de estatuto. Aqui nada é descarregado em tempo de execução, portanto se um código mudou depois de a página ter sido construída, a página não sabe. O gerador que a produziu está no repositório, pelo que regenerar é um único comando.
A própria norma ISO 3166-1 é um documento que tem de ser comprado, o que é um obstáculo real a verificar uma página como esta. Os códigos foram conferidos campo a campo com as tabelas do Unicode CLDR — os 249 valores alfa-3 e os 249 numéricos, sem uma única divergência — portanto coincidem com a cópia que os navegadores e os sistemas operativos realmente usam. É uma verificação sólida, mas é uma verificação contra o Unicode e não contra o documento normativo, e convém dizer qual das duas se está a receber.
Os indicativos telefónicos foram comparados região a região com uma biblioteca de números de telefone muito usada, e essa comparação destapou duas linhas em que os dados de origem tinham deixado passar marcas de nota de rodapé para dentro do valor: uma letra solta a seguir aos algarismos. Aqui estão limpas. É pouca coisa, mas é o tipo de defeito que sobrevive indefinidamente nas tabelas copiadas, e é a razão de o gerador retirar tudo o que não seja um algarismo em vez de confiar no campo.
Por fim, os códigos numéricos têm três algarismos e vários começam por zero: o Bangladeche é 050 e não 50. Qualquer folha de cálculo por onde estes dados tenham passado terá comido esses zeros. Aqui são preservados, o que também significa que procurar «44» encontra tanto o indicativo do Reino Unido como as Baamas, cujo código numérico é 044. Escrever um sinal de mais à frente restringe a pesquisa aos indicativos.
Porque é grátis
Porque é uma tabela. O conjunto de dados inteiro está na página que já descarregou, a pesquisa corre no seu navegador e nada do que escreve sai dali: não há servidor pelo meio para consultar um código de país.
Portanto não há conta, nem registo, nem nada guardado atrás de um. O gerador que constrói estes dados a partir do Unicode CLDR e da zona raiz da IANA está no repositório ao lado da página, com as 1342 verificações que conferem os códigos, a relação de fecho entre os dois registos e os grupos de indicativos, incluindo os controlos negativos que impedem esses testes de passar pela razão errada.