[HTML/PHP] Zle kodowanie, zly edytor? Prosze o pomoc

0

Witam.

Sytuacja:
Tworze własną witrynę internetową. Na początku tworzyłem ją w WINDOWS-1250 przez przypadek w Notatniku pod XP. Wspomagam sie FrontPage do tworzenia tabelek i wstawil mi chyba te WINDOWS-1250 przypadkowo. W kazdym razie zmieniłem na ISO-8859-2 w znacznikach <meta>. Później miałem problem z bazą MySQL ponieważ odczytywała mi krzaki. Zmieniłem kodowanie na latin2 i pobierało normalnie.

Problem pojawił się gdy zainstalowałem FireFox. Wszystko sie walneło, w momencie gdy potem otworzylem w IE nic nie bylo jak dawniej. Mimo ustawionego w przegladarkach kodowania ISO-8859-2 ciagle wyswietlaja sie krzaki.

Co probowalem:

  1. Uzylem Ogonki 97 to pliku gdzie mam cala tresc na stronie i pomogło. Nie ma już krzaków gdy oglądam, jednak gdy zrobie podgląd tego pliku w notatniku to zamiast ś widnieje ?, zamiast ą - ?. Na stronie jest dobrze.
  2. Po wyprowadzeniu danych z MySQL prawie wszystko jest w porządku tylko (przynajmniej) ś zmienia się na coś takiego (?). Mam ustawione latin2 za kazdym odczytaniem.
  3. Gdy skrypt PHP tworzy mi np. alfabet to zamiast ś i ź widnieje znów kwadrat, Ą też nie działa (L'). Fakt ze te skrypty nie zostaly skonwertowane przez Ogonki 97, moge to zrobic. Ale martwi mnie to bo chyba nie tedy droga.

Uzyłem tez ezHTML (który jak przeczytalem na Webmaster.helion.pl) sam konwertuje znaki z edytora na te na witrynie w odpowiedniej stronie kodowej. Próbowałem poprawić skrypt PHP i ciągle nic.

Moje pytanie:

  1. Przeczytalem juz duzo artykułów o kodowaniu i sam już nie wiem co robić. Totalne pomieszanie. Chciałbym przede wszystkim aby dane wyprowadzane ze skryptów, z witryny(treść) i z bazy były z polskimi znakami. Nie obchodzi mnie co zobacze w edytorze, chce to jakoś zjednać żeby był porządek, jak to zrobić?
  2. Dlaczego raz pojawia się kwadrat zamiast [ś] a innym razem ??
  3. Jak sprawić, żeby dane w MySQL pojawiały się na stronie bez kwadratów?
  4. Czy może mieć na to wpływ wersja językowa PHP? Wydaje mi sie ze jest dobrze ustawiona, ale nie wiem jak sprawdzić i prosze nie podawać mi tego jako jedynego rozwiazania problemu bo watpie ze wypali, tak jako ochłap.
  5. Czy ta ciągła konwersja skryptów i tekstów ma sens? Czy nie ma innych sposobów, czy wy tez tak konwertujecie to wszystko?
  6. Jak wprowadzać dane do MySQL przez formularz zeby nie było krzaków? W formularzu i skrypcie działam tylko na zmiennej a nie na wprowadzonej wartości więc nie mam jak jej konwertować. Chyba nie przez zamiane znaków z krzaka na polskie albo odwrotnie bo to juz bedzie totalny bajzel ?!

Pozdrawiam
Prosze o szybkie odpowiedzi, jestem wstrzymany ze wszystkim bo nie wiem jak powinienem robic zeby dalej bylo dobrze. najlepiej wg. pytan, jak ktos bylby na tyle uprzejmy prosze o krotkie wyjasnienie wątku ujednolicenia tych wszystkich spraw oraz porady w jaki sposób utrzymać porządek.

Grzesiek ([email protected])

0

Co do tego co próbowałeś:

  1. Jeżeli przetworzysz stronę do ISO-8859-2 to na stronie (o ile znacznik meta bądź serwer też będą wskazywać na to kodowanie) będzie to wyglądać poprawnie, ale w edytorze rzeczywiście będą dziwne znaczki zamiast ą i ś.

  2. Skrypty PHP, aby prawidłowo pokazywały znaki w kodowaniu ISO też muszą być napiane w ISO, bądź przekodowane jakimiś Ogonkami.

Co do pytań:

  1. dane w bazie, w plikach i w skryptach muszą być w jakimś kodowaniu (najlepiej ISO), co oznacza, że muszą być odpowiednie pliki przekonwertowane, a odpowiednie deklaracje meta odpowiednio ustawione.

  2. niewytłumaczalne zjawisko, przynajmniej jeśli nie widzę kodu strony to jakoś nie mam pojęcia dlaczego tak się dzieje

  3. dane w MySQL także muszą być w takim kodowaniu jak jest strona. Ale o iel pamiętam z MySQL są rózne problemy, możę ktoś powie dokładniej, bo ja się sam pogubiłem kiedyś :)

  4. Nie ma wpływu

  5. Osobiście prawie wszystko tworzę obecnie w kodowaniu UTF-8 - szablony XHTML, pliki CSS i tak dalej, bo mój edytor obsługuje to kodowanie automatycznie (choć z ISO też by sobie poradził - notabene FrontPage też sobie radzi). Ze względu na to, że większość skryptów PHP nie przekazuje żadnych informacji do użytkownika, a co najwyżej sięga do plików z łańcuchami językowymi, to skrypty są zwykle zapisane jako Windows-1250, bo nie ma wtedy problemów z dziwnymi znaczkami w komentarzach po konwersji na inne kodowanai (w niektórych edytorach), a tylko niektóre pliki (z danymi językowymi) są kodowane do UTF czy tam ISO.

  6. Dane zostaną do MySQL wprowadzone w takim kodowaniu, w jakim kodowaniu jest strona zawierająca formularz).

0

ja nic nie konwertuje, w locie editplusem piszę wszystko w latin2

utf nie polecam, chyba że naprawdę masz potrzebę wyświetlania naraz znaków narodowych kilku państw a żadne jedno bajtowe kodowanie ich naraz nie obsługuje. Bez takiej potrzeby utf-8 to tylko dodatkowy kłopot przy wielu rzeczach jak chociażby prostym policzeniu długości wyrazu

co do pytania drugiego to w cp1250 "ś" jest na pozycji 156, w iso-8859-2 "ś" jest na pozycji 182, więc wyświetlając stronę cp1250 jako latin2 otrzymujemy znaczek w latin2 z pozycji 156 który wygląda tak: "?", a wyświetlając stronę zapisaną w latin2 jako cp1250 otrzymujemy znaczek w cp1250 z pozycji 182 który wygląda tak: "?"

// chociaż utf-8 od strony usera jest bardzo wygodne, zwłaszcza na forum, jeśli ta strona nie byłaby w utf to trudniej byłoby zaprezentować "krzaczki" powyżej

0

a) Czyli najbiezpieczniej przekonwertować wszystko na ISO, nawet widząc krzaki w edytorze i do bazy wprowadzac tez w ISO?
b) Ale skąd ta rozbieżność, ze raz widzi ź jako jeden znak a raz jako inny? Czy moze to swiadczyc ze na stronie jest wiecej niz jedno kodowanie, wiecej niz dwa?
c) Czy poza znacznikami META jest cos co reguluje wersje kodowania witryny?

0

a) tak
b) odpowiedziałem wyżej
c) tak, najważniejszy jest nagłówek Content-type przesyłany przez serwer który możesz ustalić w php przez:

Header('Content-type: text/html; charset=ISO-8859-2');

ważna jest też pamięć przeglądarki czyli możesz mieć problemy jak raz ustawisz ręcznie przez opcje w przeglądarce kodowanie dla strony to przeglądarka może je potem zapamiętać i wyświetlać stronę dalej źle mimo że wszystko zostało poprawione

0

Powoli rozumiem, ale w takim razie w jaki sposób pobierać dane z MySQL ktore sa w latin2 zeby wyswietlało mi na stronie jako "ś" a nie jako jakikolwiek krzak czy to kwadrat czy znak akapitu czy jeszcze cos innego w ISO-8859-2? Chyba mi sie juz to wszystko pomieszało...

0

jak wszystko będzie w jednym kodowaniu to nie powinno być problemów, ew. zaraz po połączeniu z mySQL daj zapytanie:

mysql_query('SET CHARACTER SET "latin2"');
0
bitterman114 napisał(a)

w jaki sposób pobierać dane z MySQL ktore sa w latin2 zeby wyswietlało mi na stronie jako "ś" a nie jako jakikolwiek krzak czy to kwadrat czy znak akapitu czy jeszcze cos innego w ISO-8859-2?

normalnie, latin2 w praktyce to właśnie ISO-8859-2

btw. też polecam UTF-8, wygodne i ostateczne rozwiązanie..

0

Dzieki za pomoc. Przekonwertowalem do ISO, mam krzaki w notatniku ale to nic. Wazne ze wszystkie przegladarki wyswietlaja dobrze, poniewaz strona jest w wersji testowej, usunalem przykladowa baze i dodalem po przekonwertowaniu dokumentow od nowa i wszystko gra.

Dziekuje serdecznie za pomoc, przynajmniej moge ruszyc z praca dalej.
Pozdrawiam
Grzesiek

0

A żeby nie widzieć krzaków w notatniku musisz zastosować odpowiedni edytor, który poprawnie odkodowywuje ISO.

A tak przy okazji czy ktoś zna taki edytor, który poprawnie czyta w ISO i dodatkowo może zwijać znaczniki jaki notepad++

http://notepad-plus.sourceforge.net/uk/site.htm

0

HaTeML chyba ma te funkcje. ked2100 z tego co pamiętam też obsługuje iso. co do zwijania to nie pamiętam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1