Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja fwrite
Forum PHP.pl > Forum > Przedszkole
majestiq
Zapisuje za pomocą fwrite dane do plikut txt:

  1. <?php
  2. // zapisanie nowej linijki i starej zawartości
  3. $plik = fopen("pozdrowienia.txt", "w");
  4. flock($plik, 2);
  5. fwrite($plik, "$_POST[pozd] r\n");
  6. for($i=0; $i < $ile; $i++) fwrite($plik, $tekst[$i]);
  7. flock($plik, 3);
  8. fclose($plik);
  9. setcookie ("sent", "sent", time()+60); //ustawia ciasto mowiace o tym, ze już wyslal pozdrowienia. 1=1 sekunda
  10. ?>



Jednak każda taka operacja zmienia mi kodowanie znaków dla pliku txt z ustawionego utf-8 na ANSI.
Przez to robią się krzaki przy polskich znakach.

Znaki są zakodowane w utf jednak plik jest zapisywany jako ANSI.

Jak to poprawić ?[php][/php]
majestiq
Użyłem utf_encode, ale efekt jest taki że co prawda plik jest już zapisywany jako utf, jednak na stronie wyświetlają mi się
dalej krzaki tylko, że inne.

Wcześniej miałem znaki zapytania przy polskich znakach a teraz polskie znaki wyglądają tak:
ąęśćźó

Ogólnie efekt taki jak chcę osiągnąć uzyskuje tylko wtedy gdy przy zapisywaniu znaków w pliku znaki te NIE SĄ zakodowane w utf (czyli nie widac krzaków tylko
łądne poslkie ogonki, a jakby sam plik poprostu jest zakodowany w utf 8, a jak uzywam tej funkcji to zapisywana znaki są już przekształcone na krzaczki no i jest lipa.
Jednym słowem nie chcę przekształcania stringów tylko zapisanie samego pliku w utf.

Nie wiem czy jest to zrozumiałe.
sowiq
Cytat(majestiq @ 29.03.2009, 22:31:30 ) *
Jednym słowem nie chcę przekształcania stringów tylko zapisanie samego pliku w utf.
A Twoim zdaniem jak to się odbywa? Kodują się znaki, a nie plik. Jedynie możesz mieć w nagłówku pliku informację, że znaki są zakodowane w UTF-8.
majestiq
No ok, ale w takim razie czemu jak mam plika zakodowany w utf-8 (znaki w utf - widać krzaki) to na stronie, która w nagłówkach ma kodownie tez utf
wyswietlaja się krzaki, a jak w pliku zakodowanym w utf usune te krzaki i nadpisze normalnym kodowaniem windowsowym (widać polskie znaki a nie krzaki)
to wszystko jest ok ?
sowiq
http://pl.php.net/utf8_encode :
Cytat
utf8_encode — Encodes an ISO-8859-1 string to UTF-8
Jednym słowem funkcja dekoduje ciąg znaków jakby był on zakodowany w ISO-8859-1. Jeśli masz np. kodowanie ISO-8859-2 to mogą się posypać krzaki. Rozwiązanie? iconv()" title="Zobacz w manualu PHP" target="_manual

Sprawdziłem przed chwilą i jeśli masz ustawione wszystkie kodowania na utf-8, to wyjściowy plik będzie z miejsca zakodowany w ten sam sposób.
  1. <?php
  2. $string = "żażółć gęślą jaźń";
  3. $fp = fopen('test.txt', "w");
  4. fwrite($fp, $string);
  5. fclose($fp);
  6. ?>
Zapisz to w pliku kodowanym w utf-8 i uruchom. Plik wynikowy będzie zakodowany od razu w utf-8.
majestiq
Raczej 8859-2
Iconv chyba nic nie da.
Kodowanie chociaz bylo wszedzie utf8 to jednak wynikowy plik byl ansi, wiec tak nie jest.
Jak wykorzystalem funkcje ktora podaliscie mi na poczatku to juz plik byl w utf-8 ale jego zawartosc
w kodowaniu polmongolskim np:

Pozdro dla caĂƒÂƒĂ‚ÂƒĂƒÂ‚ƒÂ‚šej 3a!

biggrin.gif
sowiq
Cytat(majestiq @ 31.03.2009, 09:15:03 ) *
Raczej 8859-2
Manual mówi, że ISO-8859-1. Po to do niego podlinkowałem, żebyć przeczytał.
Cytat(majestiq @ 31.03.2009, 09:15:03 ) *
Iconv chyba nic nie da.
Chyba? A pofatygowałeś się, żeby to sprawdzić? Sprawdziłeś przykład, który Ci podałem? Jeśli nie, to nie miej pretensji, że Ci nie działa.
majestiq
Przerobilem recznie za pomoca iconv na debianie i lipka sad.gif
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.