Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Polskie znaki PHP vs MSSQL 2005
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
termin
Witam, kombinowałem dziś na wszystkie możliwe sposoby aby uzyskać polskie znaki na stronie WWW i za kazdym razem mam "?questionmark.gifquestionmark.gif?", 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 sadsmiley02.gif

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 sciana.gif

Czy FreeTDS poradzi sobie z polskimi znakami - ktoś tego próbował?
Zbłąkany
Poradzi, ja próbowałem smile.gif A w jakim kodowaniu serwer www wypuszcza dane?
termin
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.
Zbłąkany
Hmm, a spróbuj przy wyciąganiu danych użyć PDO smile.gif Swoją drogą PHP nie wspiera unikodu niestety, więc jak wyciągniesz dane z bazy to spróbuj użyć tego, by sprawdzić kodowanie danych smile.gif
termin
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ć.
Zbłąkany
Eh, nie zrozumiałeś mnie sad.gif 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 tongue.gif
termin
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.
karcheus
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ą:
  1. iconv('windows-1250', 'utf-8', $sql_result_string)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.