Apr 19 2009

Kodowanie stringów różnymi schematami - jak radzić sobię z konwersją?

Category: Ruby On Rails początki, Ruby, Ruby on RailsSebastian Bobrowski @ 2:58 pm

Często się zdarza, że pracując z aplikacją mamy do czynienia z różnymi schematami kodowania, a to jedna z bibliotek jest w ISO-8859-2 albo api innej aplikacji, z którą mamy się integrować jest w cp-1250. Wtedy powstaje problem zmiany schematu kodowania danego łańcucha znaków.

Większość programistów spotkała się oczywiście z Iconv, jednak  zwykle tylko w najprostszym przypadku użycia:

string_iso = Iconv.new(”ISO-8859-2″,”UTF-8″).iconv(string_utf_8)

W sytuacji, kiedy biblioteka napotyka znak, który nie wie jak przekodować wtedy zgłasza błąd. Aby zignorować ten błąd i nadal prowadzić proces przekodowywania należy użyć przełącznika //IGNORE.

string_iso = Iconv.new(”ISO-8859-2//IGNORE”,”UTF-8″).iconv(stron_utf_8)

Często możemy również potrzebować usunąć problemowe znaki z samego łańcucha bez potrzeby zmieniania jego zestawu kodowania na inny. Można to zrobić w następujący sposób:

nice_string = Iconv.new(”ISO-8859-2//IGNORE”,”ISO-8859-2″).iconv(string_with_problems)

Biblioteka Iconv daje nam jednak większe możliwości niż tylko przekodowywanie istniejących znaków lub usuwanie nie pasujących. Można również próbować zmusić ją do poszukiwania zbliżonych odpowiedników problemowych znaków przez zastosowanie przełącznika //TRANSLIT.

new_string = Iconv.new(”ISO-8859-2//TRANSLIT”,”UTF-8″).iconv(old_string)

One Response to “Kodowanie stringów różnymi schematami - jak radzić sobię z konwersją?”

  1. Bankowy says:

    Blog dodaliśmy do ulubionych :) pozdrawiamy autora.

Leave a Reply