Obecnie w pracy siedzę od jakiegoś już czasu i kombinuję jak w locie konwertować przesyłane mi między skryptem a bazą dane. Problem niby z działu Przedszkole (temat kodowania jest nawet przyklejony). Problem polega na jednym szczególe. A wiadomo, że diabeł tkwi w nich.
Mianowicie przyszło mi przerobić szablon strony i zrobiłem to dla uniwersalności kodując całość w UTF-8 (takie wewnętrzne kodowanie plików, jak i odpowiednie oznaczenie w meta). Gdyby baza była również w utf-8 to problemu nie ma, ale niestety tak nie jest. Ktoś podczas zakładania pomieszał w konfigu i mam taki Sajgon:
Baza: utf-8,
System porównywania: latin1_swedish_ci
Tabele wewnątrz z charsetem: latin1
No to kombinowałem i najbliższy prawidłowego wyświetlania jest układ:
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8"); oraz latin1
mysql_query("SET collation_connection = latin1_swedish_ci");
Tyle że wyrzuca on teksty z kodowaniem wyglądającym jak ASCII:
Ksi??ki i filmy o tematyce sportowej - instrukta?owe, dokumentalne
No to postanowiłem dodatkowo użyć iconv. Tyle że to także nie daje rezultatów.
$nazwa = iconv('ISO-8859-1', 'utf-8', $row['nazwa']);
Próbowałem ustawiać różne kombinacje. Poprzez konkretne ISO, nazwy latin1, latin2.
W końcu nawet zacząłem ustawiać także wartości poprzez zdefiniowane doń funkcje:
Też bez rezultatu. Wciąż brak polskich odpowiedników.
iconv_set_encoding("internal_encoding", "UTF-8"); iconv_set_encoding("input_encoding", "ISO-8859-1"); iconv_set_encoding("output_encoding", "UTF-8");
Jest mi to niestety potrzebne, bo w przygotowaniu stoją kolejne 2 bazy, a tam jest już nawet nie Sajgon, ale Wojna światowa, bo różne tabele w tej samej bazie mają różne collations.
Co jeszcze dziwniejsze. Gdy nie zrobię zmian nigdzie przy połączeniu z baza i nie zastosuję iconv (czyli strona w utf-8 pobiera dane tak jak są w bazie i po prostu je wyświetla nie operując na nich), to poprzez zmianę kodowania w przeglądarce z rozpoznanego utf-8 na iso-8859-2 to co pobrałem z bazy zostaje przekodowane na prawidłowe polskie znaki, ale reszta strony napisana w utf-8 oczywiście sypie krzakami. W ten sposób zgłupiałem bo nie mogę w końcu określić czy baza ma utf-8, ASCII, iso-8859-1 czy może iso-8859-2

Dla mnie logicznym jest, że w takim wypadku powinienem użyć iconv, ale pytanie w takim wypadku powstaje: "Jakich kodowań jako parametry użyć?. Wyjściowy na bank utf-8. Kombinacje jakich użyłem dają:
ISO-8859-2 -> utf-8: standardowe pytajniki w rombach;
ISO-8859-1 -> utf-8: standardowe pytajniki w rombach;
ascii -> utf-8: standardowe pytajniki w rombach;
Kto widzi jakieś inne kombinacje dla rozwiązania tego problemu niech da znać
