Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Funkcja fwrite, Jak wymusić kodowanie utf ?
majestiq
post 29.03.2009, 20:52:01
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

Ostrzeżenie: (0%)
-----


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]


--------------------
Free mp3 download.
Go to the top of the page
+Quote Post
sowiq
post 29.03.2009, 20:56:17
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Google nie boli.

http://pl.php.net/manual/en/function.fwrite.php#55054 - UTF-8 z BOM
http://pl.php.net/manual/en/function.fwrite.php#73764 - UTF-8 bez BOM

[edit]
Na forum też było: http://forum.php.pl/index.php?showtopic=74...=0&p=382479

Ten post edytował sowiq 29.03.2009, 21:01:11
Go to the top of the page
+Quote Post
majestiq
post 29.03.2009, 21:31:30
Post #3





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Free mp3 download.
Go to the top of the page
+Quote Post
sowiq
post 29.03.2009, 22:06:40
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
majestiq
post 29.03.2009, 23:15:00
Post #5





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

Ostrzeżenie: (0%)
-----


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 ?


--------------------
Free mp3 download.
Go to the top of the page
+Quote Post
sowiq
post 30.03.2009, 09:09:05
Post #6





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.

Ten post edytował sowiq 30.03.2009, 09:10:17
Go to the top of the page
+Quote Post
majestiq
post 31.03.2009, 08:15:03
Post #7





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

Ostrzeżenie: (0%)
-----


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


--------------------
Free mp3 download.
Go to the top of the page
+Quote Post
sowiq
post 31.03.2009, 08:34:12
Post #8





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
majestiq
post 31.03.2009, 09:05:03
Post #9





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

Ostrzeżenie: (0%)
-----


Przerobilem recznie za pomoca iconv na debianie i lipka sad.gif


--------------------
Free mp3 download.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 05:10