Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UTF-8 a ANSI
Forum PHP.pl > Forum > PHP
skrzypek1364
witam, mam pytanko odnośnie kodowania UTF-8 i ANSI. Dokładniej chodzi mi o taki fakt.
Wrzuciłem na serwer dokument tekstowy dor1.txt, zapisałem go z kodowanie UTF-8 tak aby mieć polskie znaki, jednak kiedy przy pomocy flasha i PHP modyfikuje treść tekstu na stronie i zapisuje, na serwerze plik zmienia swoje kodowanie na ANSI i wyskakują krzaki zamiast polskich znaków.

plik php wygląda tak:
Kod:
<?php

// zmienna $dane, która będzie zapisana
// może także pochodzić z formularza np. $dane = $_POST['dane'];
$dane = "dor1=$tekst";

// przypisanie zmniennej $file nazwy pliku
$file = "dor1.txt";

// uchwyt pliku, otwarcie do dopisania
$fp = fopen($file, "w");

// blokada pliku do zapisu
flock($fp, 2);

// zapisanie danych do pliku
fwrite($fp, $dane);

// odblokowanie pliku
flock($fp, 3);

// zamknięcie pliku
fclose($fp);
?>


Czy coś trzeba dopisać żeby plik po modyfikacji nie zmieniał swojego kodowania?

ponieważ jestem nowy i totalnie blady w tematyce php prosilbym o latwe rozwiazanie. Szukalem i probowalem wiele rozwiazan, niestety zadne nie przynioslo efektu.

pozdrawiam
Zyx
Kodowanie samo się nie zmienia - informacja o jego rodzaju nie jest nigdzie zapisywana, więc nie ma czegoś takiego, jak na serwerze plik zmienia swoje kodowanie na ANSI. Mam kilka potencjalnych przyczyn:

* Twój edytor tekstu tylko udaje, że zapisuje tekst jako UTF-8 - możesz np. zmienić kodowanie, ale znaki już wpisane nie są automatycznie konwertowane.
* Do pliku dopisujesz tekst, który nie jest zapisany w kodowaniu UTF-8 (przy okazji - dopisywanie do pliku to jest "a", a nie "w").
* Nie informujesz poprawnie przeglądarki o tym, że ma kodowanie UTF-8. Pamiętaj, że nie wystarczy dopisać tego w sekcji META, ale konieczne jest wysłanie tego w nagłówku HTTP "Content-type", np.

  1. <?php
  2. header('Content-type: text/html;charset=utf-8');
  3. ?>


Próbowałeś wyświetlić niezmodyfikowany plik?
skrzypek1364
tak próbowałem wyświetlić plik niezmodyfikowany i wszystko było cacy. Polskie znaki są.
a ogólnie to problem pojawił się, hmm, nawet sam nie wiem kiedy smile.gif
Wcześniej wszystko działało, ale wtedy plik swf do którego wczytuje się dany tekst był zapisany w playerze 6, po zmianie na 8 zaczęły się jazdy. Na forum flasha dostałem info że player 6 nie potrzebował dopisywać tego kodowania. a w przypadku 8 musze pozmieniać plik php. Dostałem też info żeby zrobić coś z iconv(), ale nie umiałem sobie poradzić:)
pozdro
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.