![]() |
![]() |
-ziutek- |
![]()
Post
#1
|
Goście ![]() |
Witam.
Bardzo wiele problemów przy pracy stwarzają polskie ogonki. Oczywiście, niektórzy z nich rezygnują, ale niestety nie wszyscy. Chciałbym zebrać garść porad odnośnie tego problemu. Może ja zacznę, jeśli pisze głupoty - proszę o poprawę. Zwykły html i polskie znaki, wystarczy dodać w sekcji <head> odpowiedni znacznik <meta>:
wówczas wszystkie nasze ąćęłńóśźż wyświetlane są poprawnie. Jeśli kod to czysty HTML, problemów raczej nikomu to nie sprawia. Ale problemy pojawiają się, gdy zaczynamy dodawać do tego php. Bardzo często zdarza się, że wówczas (np. używając szablonów Smarty, czy też podczas wysyłania maili - zarówno w formacie HTML jak i textowym) polskie znaki zamieniają się w krzaczki. Co więc należy zrobić w przypadku np. Smarty, żeby te polskie znaki pojawiały się? Sam meta tag nie wystarcza, jeśli ktoś nie wierzy, mogę pokazać przykład. To samo tyczy się wysyłania maili funkcją mail(). Istnieje oczywiście np. iconv(), ale czy to jedyne wyjście? A jeszcze więcej problemów pojawia się, kiedy przyjdzie nam korzystać z MySQL (sam niejednokrotnie robiąc backupa bazy poprzez phpmyadmina zamiast polskich znaków, dostałem krzaczki - a problem nie pojawia się tylko przy backupie). Z przeczytanych postów gdzieniegdzie informacji wnioskuje, że aby polskie znaki chodziły wszędzie tak, jak należy, kodowanie zarówno HTML, jak i php i MySQL powinno być takie samo. Jak zrobić? W niektórych momentach naprawdę już człowiek nie ma siły szukać, a być może ktoś już przez te problemy przebrnął i ma jakiś skuteczny na to sposób. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
To, że masz bazę w innym kodowaniu i w innym pliki php nie jest żadnym problemem pod warunkiem, że serwer MySQL zdaje sobie z tego sprawę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
W php upewnij się, że pierwsza rzecz jaką wysyłasz po połaczeniu z bazą jest informacja o kodowaniu czyli w Twoim przypadku:
To wszystko, teraz MySQL wie, że to co dostaje z php jest w tym kodowaniu i w takim też kodowaniu będzie Ci zwracał dane. Nie ma tu już znaczenia jakie kodowanie masz ustawione w tabelach. Jeśli jest inne sam serwer MySQL będzie konwertował dane które przyjmuje i które wysyła.. tak by się nic nie gryzło. (znaczy - nie ma znaczenia dopóki wysyłasz dane ze znakami, które kodowanie ustawione w tabeli zawiera.. jeśli jest inaczej to będzie kaszana). Jak wyślesz tą informację o kodowaniu to wyjdzie szydło z worka.. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jeśli dotychczas MySQL przyjmował, że przesyłasz mu dane w innym kodowaniu.. to te dane, które wtedy dodałeś MySQL teraz (na ślepo konwertując do latin2) zacznie zwracać z krzaczkami (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A odnośnie phpMyAdmin'a to myślę, że te ustawienia dotyczą tylko jego interfejsu. To znaczy - w jakim kodowaniu chcesz by phpMyAdmin pracował.. (phpMyAdmin potem wysyła informacje do mySQL, że chce otrzymywać dane w danym kodowaniu i w takim też je będzie wysyłał i sam też informuje przeglądarkę, że objawia się w tym kodowaniu).. System porównań wiadomo dotyczy tylko alfabetycznego sortowania.. czyli jesli będziesz chciał mieć rekordy poukładane alfabetycznie według jakiego pola, to to ustawienie określa według jakiego klucza będzie przyjęta kolejność (kluczem zazwyczaj są różne języki.. czyli jak wybierzesz polski.. to 'ą' będzie po 'a' a nie po 'z') Ten post edytował mariuszn3 20.07.2006, 21:57:47 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 19:19 |