Autor wpisu: Jakub, dodany: 27.04.2013 22:37, tagi: apache, php/mysql
System kodowania Unicode UTF-8 jest najlepszym, i zarazem najpopularniejszym który obsługuje znaki diakrytyczne. Niestety często spotykanym problemem jest to, że wykonany skrypt PHP ma problemy z ich wyświetleniem lub przetworzeniem. Może to być spowodowane zła konfiguracją serwer, brakiem meta tagu lub kodowaniem pliku. Poniżej postaram się pokazać, jak w prosty sposób temu zaradzić. 1. Zła konfiguracja serwera. Może się zdarzyć, że Twój serwer ma ustawione błędne kodowanie. Aby to sprawdzić wywołaj funkcję phpinfo(), a następnie odszukaj pozycję default_charset. Jeżeli przyjmuje ona wartość no value lub utf-8, to twój serwer jest skonfigurowany poprawnie. W przeciwnym wypadku, jeżeli posiadasz Windows’a wystarczy odtworzyć w edytorze plik php.ini, a następnie zakomentować linijkę default_charset(u mnie 814). Jeżeli postawiłeś serwer na systemie Linux, w pliku httpd.conf dodaj AddDefaultCharset utf-8 (o ile nie jest już tak ustawione. Możesz zrobić to jeszcze w całkiem inny sposób, dodając zaraz po otwarciu klamry PHP:
1 | ini_set('default_charset', 'UTF-8'); |
2. Kodowanie pliku. Każdy plik wykonywany wraz z uruchomieniem Twojej strony (zaincludowany też), musi mieć ustawione odpowiednie kodowanie. Zmienić je możesz za pomocą większości edytorów, jak np. Notepad++. Wystarczy że wejdziesz w sekcję Format, a następnie wybierzesz Koduj w UTF-8 (bez BOM). 3. Nagłówek. Jeżeli Twój kod znajduję się w szkielecie dokumentu HTML, upewnij się że zawiera on meta-tag:
1 | <meta http-equiv="Content-type" content="text/html; charset=utf-8"> |
W przypadku samego kodu PHP, dodaj na samym początku:
1 | header('Content-Type: text/html; charset=utf-8'); |
4. Zapytanie MySQL. Jeśli Twoje dane pobierane są z bazy danych, to właśnie w niej może tkwić problem. Aby to naprawić, dodaj to zaraz po połączeniu się z bazą danych:
1 | mysql_query("SET NAMES utf8"); |
I to by było na tyle. Pozdrawiam Jakub Cieślak.