[PHP] Problem z polskimi znakami

0

Witam,
założyłem sobie konto na lycos i wrzuciłem tam plik z takim źódłem:
tekst.php

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
</head>

<body>
<?php 

    $dane = file ($_GET[plik]);
    $liczba_wierszy = count($dane);

    for ($i = 0; $i < $liczba_wierszy; $i++) {
        echo "$dane[$i]";
    }
?>
</body>
</html>

gdy wywołuję ten plik poleceniem np:

tekst.php?plik=start
To elegancko wyświetla mi to co się znajduje w pliku start, ale bez polskich znaków.
Czy ktoś mi może doradzić dlaczego i jak to naprawić?

0

Czy plik jest w iso? Kodowanie wszystkich plików musi być takie samo, w przeciwnym wypadku musisz użyć konwertowania.

0

Tak, plik jest kodowany: ISO-8859-2, a jego treść to np:

<B>bla bla bla</B>
<P> blablablabalabla</P>

Czyli poza samym tekstem i kilkoma znacznikami typu: < B > czy < P > nic więcej nie ma.

Dodam jeszcze, że na Apachu z interpreterem PHP zainstalowanym na moim kompie również wyświetla się bez polskich znaków.

A jeśli chodzi o konwertowanie to PHP może to zrobić? Czy muszę użyć jakiegoś innego oprogramowania?

0

O ile masz poprawne kodowanie pliku (nie deklarowane, ale faktyczne) - sprawdź czy na apache nie wysyła własnego nagłówka kodowania - jeśli tak, to wyślij własny nagłówek Content-type za pomocą funkcji header.

0

Nie prościej zapisać ten start notatnikiem i kodowanie na stronie ustawić na windows-1250

0

Nie ;) Kodowanie windows-1250 to złyyy nawyk.

0

@Coldpeer: a jakieś uzasadnienie tego? Jeśli jest zakodowane poprawnie, ma ustawiony właściwy charset, i wygląda jak ma wyglądać (czyt. jest czytelne dla grupy docelowej) to jakie ma to znaczenie czy to ISO-8859-1, latin2 czy UTF-16 ?

0

Hej fajnie by było, żeby kodowanie strony było w UTF-8 - To bobry nawyk ;-)

Wtedy jak dołączasz jakieś stringi to możesz je przpuścić przez funkcję

iconv('windows-1250', 'UTF-8', $Jakis_string);

Przyjrzyj sie tej funkcji na
http://pl.php.net/manual/fi/function.iconv.php

0

mysz: W dokumentach XML kodowania Windows-1250 nie powinno się używać, dozwolony jest tylko UTF i ISO. Z bardzo prostego powodu - każdy parser XML musi obsługiwać te kodowania. Oczywiście nic nie stoi na przeszkodzie autorom parserów, aby dodali obsługę kodowania Windows, ale nie jest to wymagane.

W przypadku dokumentów HTML, bo tutaj widzę HTML 4.01 to kodowania Windows także nie powinno się stosować, bo jest to tylko i wyłącznie standard pewnej korporacji, nikt nie każe tworzyć przeglądarki z obsługą tego. To, ze wszystkie szanujące się obsługują to kodowanie, to tylko ukłon w stronę "webmasterów", tak samo jak wszelkie Quirks Mode czy obsługa document.all w Gecko.

Osobiście znam kilka przeglądarek (ale to było dawno temu), które nie rozumiały w ogóle Win-1250, za to ISO-8859-2 - jak najbardziej. Unikodu też nie rozumiały, ale to inna sprawa, bo w tych czasach się go nie używało.

@voldenet: Notatnik, przynajmniej w Windows XP i nowszych, obsługuje także zapis w UTF-8.

0

@Ktos: Mówimy o [X]HTML, nie XML, więc to nie argument. To samo dotyczy dawnych czasów.

A co do tego, co się powinno: powinno być tak żeby działało. Wszystkie browsery w tej chwili obsługują CP1250. Poza tym, jeśli grupą docelową odbiorców strony są stricte użytkownicy Windows, to nie widzę w ogóle tematu.

Ważniejsza jest prawidłowa deklaracja, zgodna z rzeczywistym kodowaniem dokumentu.

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