Mam taki kod do obcinania polskich ogonków:
@ascii = "acelnoszzacelnoszz"
@cep = "\271\346\352\263\361\363\234\237\277\245\306\312\243\321\323\214\217\257"
new_text = Iconv.new("cp1250", "UTF-8").iconv(text)
new_text.tr!(@cep, @ascii)
No i odkryłem, że ten kod nie działa w Rails 2.2.2, pewnie przez wbudowane tłumaczenia.
W testach dla danych wejściowych “ąćęłńóśźżĄĆĘŁŃÓŚŹŻ” oraz “ĄĆĘŁŃÓŚŹŻąćęłńóśźż” dostawałem odpowiedniowyniki:
expected “336-acelnoszzacelnoszz”, got “336-acelnoszzac” (using .eql?)
expected “356-acelnoszzacelnoszz”, got “356-noszzacacel” (using .eql?)
Jak patrzyłem sobie w konsoli railsów to te znaczki w zmiennej @cep są jakoś automatycznie kodowane na znaki utf, wyświetlają się znaki zapytania zamiast tych cyferek. W konsoli irb jest wszystko ok.
Problem rozwiązałem przez wywalenie Iconv i użycie tylko metody tr. Teraz jest tak:
new_text = text.tr('ąćęłńóśźżĄĆĘŁŃÓŚŹŻ', 'acelnoszzacelnoszz')
Teraz jest w sumie prościej, mniej kodu, ale zastanawiam się czy nie będzie z tym jakiś problemów. Może ktoś z was coś wie na ten temat?