Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Polskie znaki PHP vs MSSQL 2005
termin
post 3.09.2008, 19:51:17
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 13.05.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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

Ten post edytował termin 3.09.2008, 21:20:36
Go to the top of the page
+Quote Post
Zbłąkany
post 4.09.2008, 06:25:10
Post #2


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

Ostrzeżenie: (0%)
-----


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


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post
termin
post 4.09.2008, 11:39:06
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 13.05.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Zbłąkany
post 4.09.2008, 22:16:30
Post #4


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

Ostrzeżenie: (0%)
-----


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


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post
termin
post 5.09.2008, 07:24:14
Post #5





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 13.05.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
Zbłąkany
post 5.09.2008, 17:36:43
Post #6


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

Ostrzeżenie: (0%)
-----


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


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post
termin
post 9.09.2008, 08:38:29
Post #7





Grupa: Zarejestrowani
Postów: 113
Pomógł: 1
Dołączył: 13.05.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
karcheus
post 1.04.2023, 08:44:50
Post #8





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 18.06.2016

Ostrzeżenie: (0%)
-----


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)


Ten post edytował karcheus 1.04.2023, 08:45:34
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 08:55