Programação e Linux.

sexta-feira, 17 de dezembro de 2010

Remover acentos

Quando se está fazendo uma pesquisa de palavras em um banco de dados é melhor converter todos os caracteres acentuados em seus correspondentes sem acentos. Pesquisei e descobri que não é difícil fazer isto.

Por isso fiz alguns exemplos, um em php usando iconv, em python usando o suporte nativo da linguagem. Acredito que o exemplo usando iconv possa ser usado em C/C++ (man 3 iconv) visto que funciona em linha de comando (man 1 iconv) como mostrado no último exemplo.

(17/12/2010) Há também um exemplo em perl como pedido por Aurélio

Em todos os exemplos eu uso UTF-8.

Exemplo em php:

setlocale(LC_ALL, 'en_US.UTF8');

$string = "Iúri Diniz come açúcar";
echo iconv('UTF-8', 'ASCII//TRANSLIT', $string) . "\n";

Exemplo em python:

import unicodedata

string = "Iúri Diniz come açúcar"

print unicodedata.normalize(
"NFKD", string.decode('utf-8')).encode('ascii', 'ignore')

Exemplo usando linha de comando(bash):

echo "Iúri Diniz come açúcar" | iconv -f "UTF-8" -t "ASCII//TRANSLIT"


Exemplo usando perl:

use Text::Iconv;
$converter = Text::Iconv->new('UTF-8', 'ASCII//TRANSLIT');
print $converter->convert("Iúri Diniz come açúcar")