Programação e Linux.

quinta-feira, 24 de julho de 2008

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 é díficil fazer isto.

Por isso fiz alguns exemplos, um em php usando iconv, outro 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.

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"

3 comentários:

AurelioCosta disse...

Esse homi ta se vendendo ao mercado.
:P

Cade o exemplo em perl ?

C L X disse...

Atendendo a pedidos, exemplo em perl:


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

Anônimo disse...

muito obrigado!!! você salvou minha vida, passei 5 horas pesquisando na net e só agora achei algo realmente útil para lidar com a porcaria do utf8 no php!!!
valeu mesmo!!!!