Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Brak polskich znaków przy dopisywaniu do pliku ;(
artuross
post 11.10.2012, 17:31:45
Post #1





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


Mam taki mały problem, nie wiem czemu się tak dzieje, ale, gdy zapisuję do pliku jakiś ciąg, dajmy na to "hasło", zapisuje się on dobrze, polskie znaki występują. Problem pojawia się, gdy postanowię dopisać jeszcze jeden ciąg "hasło" do pliku.
Każda polska litera zostaje zamieniona na krzaczek, nie tylko ta, która została dopisana, ale nawet te, które zostały zapisane do pliku wcześniej. I tak dzieje się za każdym razem - przy utworzeniu i zapisaniu czegoś do pliku, polskie znaki występują, przy dopisaniu - występują krzaczki.

Kiedyś robiłem skrypt o podobnej funkcjonalności, w każdym razie też dane były dopisywane, a polskie znaki występowały. Od tego czasu nic na komputerze nie zmieniałem, tj. nie zmieniałem wersji ani dystrybucji Windowsa.
Nie zmieniałem też wersji XAMPPa ani WAMPa, na obu próbowałem - ten sam efekt.

Pomyślałem, że być może to jakaś wada .txt, chociaż wiem, że poprzednio na .txt działałem, zmieniłem więc rozszerzenie pliku .rtf, a jeszcze później na .doc, niestety, nie pomogło.

Próbowałem też z trybem binarnym i bez - oczywiście, za każdą zmianą usuwałem plik z danymi.

W związku z tym, będę wdzięczny za wszelką pomoc i radę - przy czym polskie znaki muszą zostać.

Pozdrawiam


--------------------
Pomoglem? Daj pomogl!
Go to the top of the page
+Quote Post
cudny
post 11.10.2012, 17:54:56
Post #2





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Ej, ale jakto zapisujesz do pliku ?
file_put_content() czy fwrite() ?
Skąd pobierasz dane ? Z formularza czy innego pliku ?
Czy ty aby na pewno piszesz o sprawach programowych ?


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
artuross
post 11.10.2012, 18:03:31
Post #3





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


1. No cóż, skoro dopisuję to pewnie używam fwrite()
2. Pobieram ze strony, z tej samej strony pobierałem już kiedyś i było OK.
3. Ciężko stwierdzić, ale skoro przy zapisywaniu po raz 1. do pliku jest to zapisywane poprawnie, a dopiero przy dopisywaniu pojawia się problem, to myślę, że tak, jest to "sprawa programowa".


--------------------
Pomoglem? Daj pomogl!
Go to the top of the page
+Quote Post
CuteOne
post 11.10.2012, 18:17:22
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


- podczas dopisywania stringu używasz tego samego pliku(skryptu), który tworzył początkowy .txt ?
- zobacz do Przedszkole->podczepione->polskie znaki
Go to the top of the page
+Quote Post
artuross
post 11.10.2012, 18:27:11
Post #5





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


1. Tak, jest to ten sam skrypt, ta sama funkcja. Od razu używam dopisywania (ab).
2. W temacie co prawda przewijają się takie problemy, ale dotyczą one bazy danych MySQL, a nie plików tekstowych.


--------------------
Pomoglem? Daj pomogl!
Go to the top of the page
+Quote Post
CuteOne
post 11.10.2012, 18:34:57
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


zrób test

  1. header('Content-type: text/html; charset=utf-8'); //w razie konieczności zmień na odpowiednie kodowanie
  2.  
  3. function insert($fname, $str) {
  4.  
  5. if(!file_exists($fname)) {
  6.  
  7. file_put_contents($str, $fname);
  8. }
  9. else {
  10. $content = file_get_contents($fname);
  11. file_put_contents($content.$str, $fname);
  12. }
  13.  
  14. return file_get_contents($fname);
  15. }
  16.  
  17. $fname = 'd:/plik.txt';
  18.  
  19. $str = file_get_contents('http://www.wp.pl');
  20. echo insert($fname, $str);


I zobacz czy wywali krzaki - pamiętaj o zmianie kodowania pliku na taki sam jak w header()
Go to the top of the page
+Quote Post
artuross
post 11.10.2012, 18:47:28
Post #7





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


Tak, działa, ale dopiero po zamianie zmiennych, najpierw nazwa, później treść tongue.gif
Zaraz sprawdzę czy to za sprawą header() czy też samo file_put_content ma takie działanie.

EDIT: Nie, w mojej wersji skryptu to nie działa, nadal pojawiają się niechciane krzaczki i chyba pojawiają się tam jakieś znaki, które burzą szyk, próba z usuwaniem wszystkich innych znaków spoza 'klawiaturowych'.

EDIT 2: Wiem przynajmniej, że wyszukiwanie przy pomocy preg_match wszystkich znaków spoza klawiatury od razu wyrzuca krzaczki smile.gif

Ten post edytował artuross 11.10.2012, 19:07:02


--------------------
Pomoglem? Daj pomogl!
Go to the top of the page
+Quote Post
cudny
post 11.10.2012, 23:00:23
Post #8





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


W takim wypadku pewnie zaiteresuje cie coś takiego:

http://php.net/manual/en/function.mb-convert-encoding.php


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
artuross
post 13.10.2012, 10:15:39
Post #9





Grupa: Zarejestrowani
Postów: 164
Pomógł: 9
Dołączył: 30.12.2011

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


To podziałało, bardzo dziękuję za pomoc, pozdrawiam.


--------------------
Pomoglem? Daj pomogl!
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: 12.06.2025 - 13:34