Skocz do zawartości

Kodowanie - ktoś może to wytłumaczyć?


michalk

Rekomendowane odpowiedzi

Witam!

Nie wiem czy na pewno tutaj powinienem to pisać bo problem dotyczy również php, ale przejdźmy do rzeczy. Dostałem od grafika pociętą grafikę z kodowaniem iso-xxxx-2 jako plik html. Polskie litery działają poprawnie i w kodzie są pisane jako 'ł' itd.(chodzi o to że be żadnych kodów liter specjalnych). Rozbijam plik html który otrzymałem na pliki .php. Wszystkie includuje do głównego index.php. Head'a w ogóle nie ruszałem czyli kodowanie dalej to samo. Wstawiam pliki php na serwer i co? Krzaki. No to zmieniam na utf-8 nie zmieniajac zapisu liter specjalnych. Wszystko działa. Robie test zapisuje plik od grafika jako bb.html i bb.php obydwa dzialaja poprawnie na iso tyle ze przy php nic nie includuje.

Pytanie:

Czy includowanie plików php oznacza wymuszenie zmiany kodowania na utf-8? Bo jak rozumiem pliki includowane nie beda poprawnie dzialac na iso.

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Inkludowanie w PHP wymusza charset pliku zewnętrznego (tego który inkluduje);

czyli mając w aaa.php (utf8)

include 'bbb.php'; // iso

PHP przyjmuje do wiadomości że bbb.php też jest w tym samym charsecie, czyli utf-ie i będzie go interpretował jako UTF-a => krzaki.

Osobiście zachęcam do przerzucenia się na Notepad++ który obsługuje windows-1250 (ANSI) i utf-8 (UTF) ale nie obsługuje (może to i dobrze) ISO-8859-2 :soczek: W prawym dolnym rogu wyświetla kodowanie bieżącego pliku.

Powód:

- ISO niby jest standardem dla Polski ale nie jest już rozwijany, w przeciwieństwie do UTF.

- Unikod daje możliwość zapisania w jednym pliku np. polskich i zachodnioeuropejskich znaków diakrytycznych oraz cyrylicy - w normalnym kodowaniu ISO musimy wybrać wersję, albo-albo.

- next: bazy danych. Miałem cholerne problemy z polskimi znaczkami w bazach danych; jeszcze połączenie strona-baza to najmniejszy kłopot, ale zrobienie zrzutu bazy i jej wgranie (zwłaszcza w starych phpmyadminach) może być kłopotliwe. Jeśli od początku ustawisz sobie stronę w UTF-ie i bazę w UTF-ie to nie będzie żadnych problemów.

Pisanie teraz w ISO to krok wstecz. Stare serwisy - wiadomo, niech sobie stoją, nie ma po co ich przerabiać jeśli działają.

Btw. N++ ma dwa tryby Unicode: ANSI UTF albo UTF, "lepszy" jest ten pierwszy bo nie zawiera trzech znaczków BOM (byte order mark), które informują o charsecie;

* wadą ANSI UTF jest to że zapisując plik który nie zawiera żadnych znaków diakrytycznych, będzie on zredukowany do poziomu zwykłego ANSI, i jeśli później dodasz jakieś ĄĘŚŁĆ i nie zauważysz to zapiszesz go dalej jako ANSI; ale później widząc krzaki na ekranie od razu wiadomo gdzie jest błąd i skąd wynika.

* natomiast wadą "normal"UTF jest przesyłanie trzech znaczków BOM czasami wtedy gdy nie trzeba, mogą z tego wynikać problemy typu headers already sent (zostaną wysłane 3 znaki do przeglądarki). Dlatego generalnie lepsza jest pierwsza opcja.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności