Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z iconv
Forum PHP.pl > Forum > Przedszkole
slawny
  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
wookieb
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.
slawny
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. ?>
wookieb
Włącz sobie pełne raportowanie błędów.
  1. <?php
  2. ?>

Mi wszystko działa.
slawny
Włączyłem i nic wyrzuca. sciana.gif
sowiq
[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?
batman
phpinfo() i sprawdź, czy masz włączone iconv.
wookieb
A to jest na 100% cały twój plik skryptu? I czy ten kod na pewno się wykonuje>
slawny
@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?
batman
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.
slawny
@batman: nic to nie zmieniło. Znów pusty plik.
erix
A nie masz gdzieś błędów składniowych?

Spróbuj najpierw mb_detect_encoding" title="Zobacz w manualu PHP" target="_manual, co zwraca?
batman
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ć.
slawny
string(0) ""
batman
No to już coś mamy. Najbardziej prawdopodobna przyczyna problemów to niepoprawne kodowanie ciągu wejściowego. Nie jest to UTF-8.
slawny
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.
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.