Tirando os acentos
by Ricardo Yasuda on December 19, 2007 21:29
Posted in Ruby
Recentemente tive que fazer uma rotina para tirar os acentos de um arquivo texto (fornecido pelo cliente) antes de serem processados, pois as diferenças de charset (tipicamente ISO-8859-1 vs. UTF-8) levavam a linha a ter um comprimento maior que o esperado. Assim, o script que interpretava a linha entendia tudo errado, pois é baseado em comprimento de strings. Procurei muito na internet (quero dizer, Google) mas não achei nada que pudesse resolver o problema. Então fui explorando a documentação do Ruby e experimentando no IRB até chegar nessa solução:
f = File.open(filename,‘r’)
f.each_line do |line|
line = line.strip
next if line.length == 0
lines.push line
- replace accented characters to avoid charset conflicts
line = line.tr(“\301\300\303\302\341\340\343\342”,‘a’)
line = line.tr(“\311\312\351\352”,‘e’)
line = line.tr(“\315\355”,‘i’)
line = line.tr(“\323\325\324\363\365\364”,‘o’)
line = line.tr(“\332\372”,‘u’)
line = line.tr(“\307\347”,‘c’)
line = line.tr(“\321\361”,‘n’)
# processamento da linha aqui
end
Não ficou lá muito elegante, mas pelo menos pra mim funcionou. Alguma sugestão de refactoring?
You may also like:
- Migrando senhas com Authlogic
- 6o Encontro do Guru-SP - Testes
- Rails Summit 2009
- Why's (poignant) Guide to Ruby em Português
- Evento: Ruby e Rails no Mundo Real

