logo
close

Konwersja standardów kodowania polskich znaków w PHP

31 sierpnia 2019
simplie Komentarze: 0 Kategoria: Aktualności

Jedną z ważnych decyzji które należy podjąć rozpoczynając tworzenie nowej strony WWW jest określenie sposobu kodowania polskich znaków. Trzy standardy które zazwyczaj bierze się pod uwagę w takiej sytuacji to ISO-8859-2 (zalecany), Windows-1250 (zwykle odradzany) i UTF-8 (standard bazujący na Unicode, polecany do wielojęzycznych stron WWW). Po dokonaniu tego wyboru należy jeszcze dodać odpowiedni nagłówek <meta> do strony aby określić używany zestaw znaków, i ew. ustawić go w swoim ulubionym edytorze tekstu.

Niestety wykonanie tych czynności nie zawsze oznacza koniec problemów z polskimi znakami – może zdarzyć się sytuacja że dane odczytywane z bazy danych, pliku XML lub też pobierane z Internetu będą używać innego standardu kodowania znaków. W takiej sytuacji konieczne będzie dokonanie odpowiedniej konwersji.

Do przeprowadzenia konwersji można napisać własne funkcje w PHP. Znacznie lepiej jednak jest skorzystać z funkcji iconv() dostępnej w module iconv (moduł ten nie jest domyślnie ładowany; jeżeli go nie masz załadowanego, skontaktuj się z administratorem swojego serwera). Moduł ten opiera się na bibliotece libiconv, czyli na dostępnej na licencji GNU bibliotece służącej do konwersji znaków pomiędzy różnymi standardami kodowania. Nagłówek funkcji iconv() w PHP wygląda następująco:

string iconv ( string in_charset, string out_charset, string str )

Oznacza to że funkcja ta przyjmuje trzy parametry:

  1. sposób kodowania znaków w tekście przekazanym jako trzeci parametr;
  2. docelowy sposób kodowania znaków;
  3. tekst dla którego ma zostać zmienione kodowanie znaków.

Przykładowo konwersję tekstu z UTF-8 na ISO-8859-2 można wykonać następująco:

$str = iconv("utf-8", "iso-8859-2", $str);

Taki zapis jest jednak nieco przydługi, zwłaszcza jeżeli byłaby potrzeba zastosowania go w kilku miejscach. Dlatego też warto napisać sobie funkcje które uproszczą wywołanie funkcji iconv(), np. takie jak poniżej:

// Konwersja UTF-8 -> ISO-8859-2
function Utf8ToIso($str)
{
    return iconv("utf-8", "iso-8859-2", $str);
}
 
// Konwersja ISO-8859-2 -> UTF-8
function IsoToUtf8($str)
{
    return iconv("iso-8859-2", "utf-8", $str);
}

Podsumowując: najłatwiejszą metodą wykonania konwersji standardów kodowania polskich (i nie tylko) znaków w PHP jest użycie funkcji iconv() z modułu o tej samej nazwie. Warto także zainteresować się pozostałymi funkcjami udostępnianymi przez ten moduł, gdyż ich użycie zdecydowanie ułatwi pisanie skryptów PHP które muszą sobie radzić z różnymi standardami kodowania polskich znaków.

Komentarze

Komentarz

Komentując, akceptujesz Politykę prywatności