Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kodowanie, i polskie znaki
-ziutek-
post
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>:

  1. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />

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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mariuszn3
post
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:
  1. SET NAMES 'latin2'

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
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 19:19