Apr 19 2009
Kodowanie stringów różnymi schematami - jak radzić sobię z konwersją?
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)


May 4th, 2010 at 8:10 am
Blog dodaliśmy do ulubionych
pozdrawiamy autora.