Remover Acentos: normalização Unicode, não uma tabela de substituição manual
A forma ingênua de remover acentos seria uma tabela de substituição — mapear "á" para "a", "ç" para "c", "ã" para "a", e assim por diante para cada combinação de letra acentuada existente. Isso funciona, mas exige manter manualmente uma lista de centenas de combinações possíveis entre letras-base e diacríticos, e ainda falha silenciosamente para qualquer combinação não prevista na tabela. Este removedor usa uma técnica estrutural diferente e mais robusta: normalização Unicode NFD (Normalization Form Decomposed), que decompõe cada caractere acentuado em dois pontos de código separados — a letra-base e o diacrítico como um caractere combinante independente — seguida de um filtro que remove especificamente os diacríticos combinantes (a faixa Unicode U+0300–U+036F), preservando só as letras-base.
Por que isso funciona para qualquer acento, sem lista manual
A vantagem dessa abordagem é cobertura completa por construção: como o Unicode já define formalmente quais pontos de código são "diacríticos combinantes" (a faixa U+0300–U+036F cobre acento agudo, grave, circunflexo, til, trema e dezenas de outras marcas usadas em vários alfabetos, não só o português), filtrar por essa faixa remove qualquer acento que o Unicode reconheça como tal — sem precisar prever manualmente "ê" ou "ñ" ou qualquer combinação específica. É a mesma técnica de normalização NFD usada em processamento de texto profissional para busca "tolerante a acento" (onde buscar "cafe" também encontra "café") — normalizar ambos os lados da comparação para a forma sem diacrítico antes de comparar.
O que NFD não remove: caracteres que não são "letra + acento"
Vale uma ressalva de precisão: nem toda letra "especial" é uma combinação decomponível de letra-base mais diacrítico. O "ç" (cedilha) de fato decompõe em NFD como "c" + marca combinante (U+0327); mas algumas letras de outros idiomas são caracteres Unicode próprios, sem forma decomposta — não decompõem em "letra-base + acento" porque, do ponto de vista do padrão Unicode, não são consideradas uma combinação das duas coisas. Uma ferramenta baseada em NFD lida corretamente com a esmagadora maioria dos casos do português e de outros idiomas latinos, mas não é uma solução universal para "remover qualquer caractere não-ASCII" — esse seria um objetivo diferente, coberto por outra abordagem.