Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Microsoft SQL Server / MSDE _ Polskie znaki PHP vs MSSQL 2005

Napisany przez: termin 3.09.2008, 19:51:17

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ł?

Napisany przez: Zbłąkany 4.09.2008, 06:25:10

Poradzi, ja próbowałem smile.gif A w jakim kodowaniu serwer www wypuszcza dane?

Napisany przez: termin 4.09.2008, 11:39:06

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.

Napisany przez: Zbłąkany 4.09.2008, 22:16:30

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ć http://pl.php.net/manual/pl/function.mb-detect-encoding.php, by sprawdzić kodowanie danych smile.gif

Napisany przez: termin 5.09.2008, 07:24:14

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ć.

Napisany przez: Zbłąkany 5.09.2008, 17:36:43

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

Napisany przez: termin 9.09.2008, 08:38:29

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.

Napisany przez: karcheus 1.04.2023, 08:44:50

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)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)