Maciej Cybulski

Maciej Cybulski Magik od WordPressa,
secjalista SEO

Temat: Problem z kodowaniem...

Witam,
ostatnio zauważyłem coś dziwnego. Mam stronę napisaną w użyciem kodowania UTF-8. Okazuje się niestety że coś jest nie tak. Przy wyświetlaniu strony w przeglądarce źle odzwzorowuje polskie znaki tzn zamiast "ż" wstawia "ş" i widzę że występuje to zarówno w danych pobieranych z MySQLa jak i normalnych statycznych plikach html.
Tym bardziej dziwne jest to bo jak otwieram pod Dreamweaverem plik to wszystko jest wyświetlane poprawnie.
Co może być nie tak?

konto usunięte

Temat: Problem z kodowaniem...

Problem może być bardzo prozaiczny - może zapomniałeś zadeklarować kodowania znaków na stronie a domyślne kodowanie serwera jest różne od UTF-8. Albo może masz ustalone odgórne kodowanie w przeglądarce i nie patrzy ona na to, co chce strona.

pozdrówka

Fabryka Marzen
Maciej Cybulski

Maciej Cybulski Magik od WordPressa,
secjalista SEO

Temat: Problem z kodowaniem...

Heh no to nie byłby problem. Na stronie mam zdefiniowane UTF-8 a przeglądarka albo automatycznie zczytuje albo nawet jak wybieram ręcznie stronę kodową to i tak problem występuje w równym stopniu ale TYLKO z jedną literą... ż. Gdyby było coś takiego jak piszesz to inne polskie literki też by się "posypały"
Wojciech Sznapka

Wojciech Sznapka CTO @ STS Zakłady
Bukmacherskie

Temat: Problem z kodowaniem...

Sprawdź czy sam plik na dysku edytujesz z zachowaniem odpowiedniego kodowania. Nie wiem jakiego używasz edytora, ale np. w Pspadzie czy Notepad2 jest opcja zmiany kodowania - błąd może być tutaj. A najlepiej podaj link do strony, wtedy się zobaczy co jest nie halo.
Łukasz K.

Łukasz K. IT Project
Manager/Team Leader

Temat: Problem z kodowaniem...

Ważne jest też w jakim kodowaniu zapisujesz dane do bazy danych. Jeżeli używasz jakiegoś systemu CMS to sprawdź jakiego on używa kodowania.

Pozdrawiam,
Łukasz

konto usunięte

Temat: Problem z kodowaniem...

zzKonrad Sekuła edytował(a) ten post dnia 21.04.08 o godzinie 00:28
Maciej Cybulski

Maciej Cybulski Magik od WordPressa,
secjalista SEO

Temat: Problem z kodowaniem...

Do pisania używam Dreamweavera, w którym zdefiniowałem dokumenty z kodowaniem UTF-8. I taki nagłówek jest dodawany na początku dokumentu HTML/PHP
Zauważyłem jeszcze jedną dziwną rzecz...
Baza zdefiniowana jest z kodowaniem utf8_bin. Do wprowadzania danych do bazy używam i formularza z kodowaniem UTF-8 i phpMyAdmin i okazuje się że niestety mimo tego że wprowadzam wszystko niby ok to przy odczycie są te same błędy z tą literą.
To samo dzieje się z danymi któe nie są pobierane z MySQLa tylko ze statycznych stron,dlatego nie mogę się połapać gdzie coś skopałem:/ Czyli nie zależy to od tego czy dane zapisane są w bazie czy też nie.
Z resztą można zerknąć na stronkę http://mc2studio.plMaciej Cybulski edytował(a) ten post dnia 13.08.07 o godzinie 00:15
Bartosz Grzesiak

Bartosz Grzesiak Si non confectus,
non reficiat

Temat: Problem z kodowaniem...

Maciej C.:
To samo dzieje się z danymi któe nie są pobierane z MySQLa tylko ze statycznych stron,dlatego nie mogę się połapać gdzie coś skopałem:/ Czyli nie zależy to od tego czy dane zapisane są w bazie czy też nie.
Z resztą można zerknąć na stronkę
dnia 13.08.07 o godzinie 00:15[/edited]

Ciężko mi stwierdzić na powyższej stronie (brak polskiego tekstu), może problemem jest zainstalowany font, który w magiczny sposób nie wyświetla poprawnie litery?

To tylko sugestia
Tomasz Wójcik

Tomasz Wójcik inżynier informatyk,
specjalizacja: sieci
komputerowe

Temat: Problem z kodowaniem...

Po nawiązaniu połączenia z MySQL i wybraniu bazy ustaw kodowanie transakcji poleceniami

set names utf8
set character set utf8

Komunikacja z MySQL będzie następować w tym kodowaniu, ponadto jeżeli na stronie używasz funkcji np. htmlentities to zamień

$str = htmlentities($str);
na
$str = htmlentities($str, ENT_COMPAT, 'utf-8');

Kiedyś się na tym potknąłem dlatego teraz wspominam; może to coś pomoże
Michał Szajbe

Michał Szajbe Co-founder & CEO w
Humante

Temat: Problem z kodowaniem...

Też kiedyś męczyłem się z podobnym problemem. Pomogło dopiero ręczne wysłanie nagłówka z kodowanie strony funkcją header().
Wojciech K.

Wojciech K. realizator pomysłów
własnych

Temat: Problem z kodowaniem...

Michał S.:
Też kiedyś męczyłem się z podobnym problemem. Pomogło dopiero ręczne wysłanie nagłówka z kodowanie strony funkcją header().

takie coś dzieje się, gdy jest ustawione domyślne kodowanie w Apaczu - w jednej z wersji apacza było to omyłkowo ustawione w źródłach, więc można było dostać wścieklizny, jeśli miało się samodzielnie skompilowany serwer i nie reagował on na dyrektywy wydawane/komentowane w konfigach (reagował tylko na header())
Maciej Cybulski

Maciej Cybulski Magik od WordPressa,
secjalista SEO

Temat: Problem z kodowaniem...

Problem już zlkoalizowany choć do końca nie jest rozwiązany. Mianowicie żeby nie mieć problemów z różnicami w kodowaniu użyłem zmodyfikowanej biblioteki która zamieniała mi w locie kodowania. NIestety w bibliotece zakradł się błąd w efekcie którego błędnie wyświetlana była litera "ż". Jako rozwiązanie przyjąłem prostszą wersję czyli wymuszenie znormalizowania komunikacji powmiędzy bazą a stroną i edytorem. Teraz cała trójka jest na UTF-8 i jest ok. Ale bibliotekę trzeba będzie poprawić:/

konto usunięte

Temat: Problem z kodowaniem...

Jednakowoż włącz (odkomentuj) to meta z kodowaniem, bo bez tego UTF-8 nieładnie (aktualnie) wygląda...

Jeśli chcesz w przyszłości testować błędy z kodowaniem, to proponuje zacząć od zrzucenia danych na dysk i przejrzenia ich jakimś edytorem (PSPad, Taditor - ten drugi mojego autorstwa), który wspiera UTF-8 / Unicode lub inne kodowanie. Jeśli w edytorze będzie OK, to znaczy, że masz problem "tylko" z wyświetlaniem (Apache, HTML), a dane są dobre.

UTF-8 jest o tyle dobry, że uniwersalny - obsługuje wiele języków naraz i w każdym (no prawie) systemie wygląda tak samo. No i jest automatycznie rozpoznawalny - nawet bez "meta" teoretycznie powinien być dobrze wyświetlany (ale jak widać w przeglądarkach niestety nie jest).

Następna dyskusja:

problem z kodowaniem przy i...




Wyślij zaproszenie do