![]() |
![]() ![]() |
![]() |
-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: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Witaj,
Zrezygnuj z ISO-8859-2 i koduj znaki w UTF-8. To po pierwsze, a po drugie to wszystkie znaki dodane do dokumentu muszą być zapisane właśnie w takim kodowaniu, aby było poprawnie wyświetlane ( edytor PsPAD ma taką opcję, ale nie tylko, zobacz temat o edytorach do php ). Jeżeli chodzi o samo php to tutaj, jeżeli nagłowek jest poprawny czyli UTF-8 to znaki są kodowane właśnie w nim. Ewentulanie, jeżeli nadal nie masz polskich znaków, a w samym html'u masz poprawne kodowanie ustawione to możesz dodać surowy nagłowek ( header" title="Zobacz w manualu php" target="_manual ) ... Ja osobiście problemów z polskimi znakami nie miałem nigdy, oprócz konwersji baz mysql. Jeżeli masz jakiś konkretny problem to podaj kod, to pomożemy/wyjaśnimy ![]() Pozdrawiam! » Zobacz również - Najczęstsze błędy, pkt 4 -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim problemem nie są żadne ogonki tylko kodowanie znaków przyjmowane przez edytor i/lub przez program w którym odbiorca ogląda dokument..
Są dwie rzeczy o których trzeba pamiętać pierwsza to upewnić się, że edytor, w którym piszemy faktycznie zapisuje dane w kodowaniu w jakim chcemy by zapisywał.. druga rzecz by odbiorca wraz z dokumentem dostał informację o tym w jakim kodowaniu jest dany dokument. To wszystko koniec kropka. Ten post edytował mariuszn3 20.07.2006, 19:05:56 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 5.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Więc jak chcesz poważnie pisać stronki to daruj sobie Notepad'a
![]() Polecam TigerII MiniPad, nie jest to kombajn ale w zupełności wystarczy, no i możesz sobie wybrać kodowanie. Ja mam takie pytanie. w mysql'u mam dane zapisane w UTF-8 a pliki w iso-8859-2, wszystko jest ok i dane zapisywane do bazy jak i odczytywane są poprawnie, ale czy jest to poprawne jeśli chodzi o normy i standardy ? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Raczej nie poprawne.. domyślam się, że mysql nie wie w jakim kodowaniu mu wysyłasz dane. Problem się pojawi wtedy gdy będziesz chciał pobrać dane z bazy jakimś innym wynalazkiem pracującym w innym kodowaniu.. Dopóki będziesz działał tylko mysql <-> php nie zauważysz żadnego problemu
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 5.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
hmm trochę mnie to przerasta
1. Pliki .php i .html mam kodowane w iso-8859-2 2. Przy wchodzeniu w phpMyAdmin pisze: System kodowania znaków dla MySQL: UTF-8 Unicode (utf8) oraz System porównań dla połączenia MySQL: utf8_unicode_ci 3. Natomiast pola w tabelach mam: Metoda porównywania napisów: utf8_polish_ci I teraz juz nic nie rozumiem... phpMyAdmina sam instalowałem więc mogłem coś popieprzyć, już czuję przez monitor te podśmiechujki. No ale tak juz jest ![]() Co powinienem zmienić żeby było tak jak być powinno. Przekodowywanie plików trochę zajmie, bazę mam dosyć małą więc jak by wyskoczyły tam jakieś syfy to nie było by to takim problemem. |
|
|
![]()
Post
#7
|
|
![]() 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ę
![]() 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.. ![]() ![]() 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 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 28.05.2006 Ostrzeżenie: (0%) ![]() ![]() |
To może i ja się czegoś dowiem. Wspominane tu było o wysyłaniu maila i problemie polskich znaków nim. Jak to wysyłać tak, żeby tych problemów nie było? Mam przykładową stronę, zawierającą formularz (pola temat, treść i submit) oraz strona zapisana (w PsPadzie) przy kodowaniu utf-8 oraz meta tag z utf-8.
Po kliknięciu na submit wysyła maila do dwóch adresatów: jeden ma poczte na poczta.fm, drugi na gmail.com. W obu przypadkach w temacie i treści wpisuje wszystkie polskie znaki. Co się okazuje? Że na gmail.com znaczki interpretowane są dobrze, zaś na poczta.fm wyskakują tylko i wyłącznie krzaczki. Czy można coś z tym zrobić? Kod za to odpowiedzialny:
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Najprawdopodobniej poczta.fm ma gdzieś kodowanie znaków i nie sprawdza kodowania w jakim wiadomość została wysłana.. po prostu binarnie przerzuca treść na ekran a że sama pracuje w kodowaniu ISO-8859-2 to mail wysłany w utf-8 pokazuje krzaczki. Rozumiem, że chodzi o to jak to wygląda na stronie poczta.fm, myślę, że jeśli odbiorca będzie odbierał wiadomość przez jakiegoś klienta poczty na komputerze, który już będzie respektował informacje o kodowaniu to nie będzie tego problemu.
Gmail nawet nie musi sprawdzać kodowania by dobrze pokazać tę wiadomość, bo sam pracuje w utf-8. Gdzieś czytałem, że właśnie w przypadku maili lepiej pozostać przy iso, bo jeszcze w użyciu jest wiele klientów, które ignorują informacje o kodowaniu i wszystko przyjmują jako iso i to jest dobry przykład do tej tezy. Ten post edytował mariuszn3 20.07.2006, 23:14:58 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:22 |