Witam, kombinowałem dziś na wszystkie możliwe sposoby aby uzyskać polskie znaki na stronie WWW i za kazdym razem mam "??", jedynie "ó" mam poprawnie wyświetlone. Podłączam się do bazy CDN Optima i tam jest ustawione collation na POLISH_CI_AS czyli jak na nasze ok, a pola bazy danych są jako NVARCHAR. Strona WWW stoi na serverze FreeBSD, kodowanie strony jest w UTF-8 ale mogę ją zmienić na dowolnie inny format tylko pytanie na jaki? Kombinowałem z iconv ale bez rezultatu. Zaaktualizowałem PHP do wersji 5.2.6 ale nadal lipa
Doradźcie coś!
Heh - polskie znaki się pojawiły ale gdy server stoi na Windowsie, ten sam plik PHP umieszczony na serverze FreeBSD i brak polskich znaków, no to teraz to już nic nie kumam
Czy FreeTDS poradzi sobie z polskimi znakami - ktoś tego próbował?
Poradzi, ja próbowałem A w jakim kodowaniu serwer www wypuszcza dane?
w UTF-8
masz moze jakieś doświadczenie z tym FreeTDS, bo ja tylko konfigurowałem freetds.conf, a wyczytałem ze trzeba chyba jeszcze odbc.ini chociaż w freetds.conf ustawialem client charset = UTF-8 ale nie wiem czy to sie tyczy jak dane mają zostać przekonwertowane czy tu ustawia sie jakie baza ma kodowanie.
Hmm, a spróbuj przy wyciąganiu danych użyć PDO Swoją drogą PHP nie wspiera unikodu niestety, więc jak wyciągniesz dane z bazy to spróbuj użyć http://pl.php.net/manual/pl/function.mb-detect-encoding.php, by sprawdzić kodowanie danych
w jakim kodowaniu serwer www wypuszcza dane?
wypuszcza chodzi Ci o w jakim kodowaniu je pobiera z bazy danych?
To jest tak, ze ja zrobię bazę pośrednią pomiędzy CDN z bazą MS SQL a stroną WWW z bazą MySQL. Czyli pobieram dane z MS SQL-a i przerzucam je do MySQL-a, po drodze robiąc konwersje polskich znaków. O ile na windowsie polskie znaki są OK o tyle na FreeBSD nie ma. Oczywiście używam iconv aby je przekonwertować CP1250 -> UTF-8. Jeżeli na FreeBSD uda mi się uzyskać PL znaki to zapisując je do bazy MySQL już nie będzie problemu. W najgorszym wypadku jeżeli nie uda mi sie tych znaków uzyskać to przerzut danych pomiędzy bazą pośrednią zrobię na windowsie. Może teraz bardziej rozjaśniłem sprawę o co mi chodzi. Nie wnikamy do czego baza pośrednia, załóżmy ze tak ma być.
Eh, nie zrozumiałeś mnie Miałem na myśli jakie kodowanie ma ustawiony apache? A jakie masz kodowania ustawione we freetds ? Poza tym to jest imho durne rozwiązanie
Dzięki "zabłąkany" za pomoc, trzeba było ustawić mssql.charset = cp1250 w php.ini i śmiga, ustwienie tego przez iniset nic nie daje.
Mam podobny problem. Łączę się przez w php przez PDO do serwera SQL za pośrednictem FreeTDS
Problem z polskimi znakami rozwiązałem dopisując do pliku freetds.ini kod "client charset = UTF-8"
Teraz jak pobieram dane to wszystko ładnie się wyświetla ale są wyjątki. Jeżeli w pobieranym polu jest fraza "test 2ś" to wywala mi dla tego 2ś znak pytajnika. Ktoś wie o co chodzi?
Edit: rozwiązałem problem ustawiając kodowanie w pliku freetds.ini na windows-1250 a potem w pliku php dla pobranego wyniku z zapytania zastosowałem konwersje komendą:
iconv('windows-1250', 'utf-8', $sql_result_string)
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)