Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z iconv, zwraca pusty wynik
slawny
post
Post #1





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


  1. <?php
  2. $tablica = file("import.txt");
  3. for ($i=0; $i<count($tablica); $i++)
  4. {
  5. $dane.=$tablica[$i];
  6. }
  7. $dane = iconv("UTF-8", "cp1250", $dane);
  8. $plik = fopen('ex.txt', 'w');
  9. fwrite($plik, $dane);
  10. fclose($plik);
  11. ?>


co tu jest nie tak że zwraca pusty plik. Jak zakomentuje linie z iconv i wyświetle dane to wszystko jest ok
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Po pierwsze nie wiem po co tam kombinuejsz z petlami.
Od pobrania danych masz http://php.net/file_get_contents
do zapisania http://php.net/file_put_contents

przepisz kod uzywajac tych funkcji i wtedy zobacz wynik.

UWAGA DO POSTUJACYCH! Wiem o fopen, fwrite, itp ale podaje mu najprostsza droge realizacji zadania wiec nie pisac o tych funkcjach.
Go to the top of the page
+Quote Post
slawny
post
Post #3





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


napisałem tak, też zwraca pusty plik

  1. <?php
  2. $z = file_get_contents('import.txt');
  3. $dane = iconv("UTF-8", "cp1250", $z);
  4. $do = file_put_contents('ex1.txt', $dane);
  5. ?>
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Włącz sobie pełne raportowanie błędów.
  1. <?php
  2. ?>

Mi wszystko działa.
Go to the top of the page
+Quote Post
slawny
post
Post #5





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


Włączyłem i nic wyrzuca. (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)
Go to the top of the page
+Quote Post
sowiq
post
Post #6





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

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


[edit]
A co masz na myśli pisząc 'nic nie zwraca'? Plik się nie tworzy? Jakie masz prawa dostępu do katalogu, w którym go tworzysz?

Jak nic Ci nie wyrzuciło przy error_reporting(E_ALL), to może po prostu plik tworzy się w innym katalogu niż myślisz?

Ten post edytował sowiq 5.06.2009, 14:06:27
Go to the top of the page
+Quote Post
batman
post
Post #7





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




phpinfo() i sprawdź, czy masz włączone iconv.
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A to jest na 100% cały twój plik skryptu? I czy ten kod na pewno się wykonuje>
Go to the top of the page
+Quote Post
slawny
post
Post #9





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


@batman: conv support enabled- więc ok

@sowiq: plik się tworzy ale pusty. Tak jak pisałem jak zakomentuje iconv to utworzy plik i wypełni go danymi

@wookieb: moj skrypt i wykonywac się wykonuje

Moja propozycja: może wyśle komuś na maila ten plik, odpali ten skrypt u siebie i odeśle mi przekonwertowany?
Go to the top of the page
+Quote Post
batman
post
Post #10





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Jedyne co pozostało do sprawdzenia to:
  1. <?php
  2. echo $dane;
  3. $dane = iconv("UTF-8", "cp1250", $dane);
  4. echo $dane;
  5. ?>
Jeśli drugie echo będzie puste, to znaczy, że coś nie tak jest z kodowaniem wejściowym lub wyjściowym. Zmień cp1250 na np ISO-8859-2 i sprawdź czy działa.
Go to the top of the page
+Quote Post
slawny
post
Post #11





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


@batman: nic to nie zmieniło. Znów pusty plik.
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie masz gdzieś błędów składniowych?

Spróbuj najpierw mb_detect_encoding" title="Zobacz w manualu PHP" target="_manual, co zwraca?
Go to the top of the page
+Quote Post
batman
post
Post #13





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(slawny @ 5.06.2009, 15:28:25 ) *
@batman: nic to nie zmieniło. Znów pusty plik.
Nie pytałem się co jest w pliku, tylko co jest w drugim echo. Swoją drogą możesz zmienić echo na var_dump, wówczas będzie wiadomo, co iconv zwróciło.
Jak już sprawdzisz co wyświetla var_dump, to zmień kodowanie na CP1250 (pisane z dużych liter).


~erix mb_detect_encoding jest jedną z najbardziej zawodnych funkcji, z których miałem okazję korzystać.
Go to the top of the page
+Quote Post
slawny
post
Post #14





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


string(0) ""
Go to the top of the page
+Quote Post
batman
post
Post #15





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




No to już coś mamy. Najbardziej prawdopodobna przyczyna problemów to niepoprawne kodowanie ciągu wejściowego. Nie jest to UTF-8.
Go to the top of the page
+Quote Post
slawny
post
Post #16





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


Nie no sprawdzałem. Jest utf-8, a gdyby nie było to dla pewności zapisałem w utf-8.
Nie wiem czemu się tak działo-dzieje.
Problem tymczasowo rozwiązał plik od @wookieb.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 14.09.2025 - 22:43