[PHP]Problem ze zczytywaniem polskich znaków


(Bobeeq) #1

Witam. Do domowych warunków postanowiłem zrobić sobie program (w php, bo inne języki raczej słabo u mnie przędą :stuck_out_tongue_winking_eye:). Działa mniej więcej tak:

otwiera plik z rozszerzeniem .m3u (lista winampa), zapisuje scieżki do zmiennej, nazwy mp3 do drugiej zmiennej, używam copy, żeby skopiować plik ze ścieżki podanej w pliku .m3u, do nowego folderu o nazwie piosenki z rozszerzeniem mp3. Wszystko działa fajnie, o ile nazwa piosenki nie ma polskich znaków... Zresztą... kod zedytowany i okomentarzowany do wglądu wygląda następująco:

<?php

$plik = "Ścieżka do pliku m3u"; 

$uchwyt = fopen($plik, "r"); // otwiera plik z listą

$zawartosc = fread($uchwyt, filesize($plik)); // odczytuje caly plik i zapisuje do zmiennej $zawartosc


$tablica = explode("\r\n", $zawartosc); // zapisuje do tablicy każdą linijkę pod kolejne indeksy z listy m3u.

$wartosc = count($tablica); // zlicza ilość elementów tablicy


$a = 1; // kosmetyczna zmienna

print "

| $a | Kopiowanie | $plik | do | $przeznaczenie | nie powiodlo sie. |
| $a | Kopiowanie | $plik | do | $przeznaczenie | powiodło się. |

"; // zamyka tabele fclose($uchwyt); // zamyka plik ?> [/code]

No i wszystko ładnie kopiuje, ale jak pobierze z listy m3u nazwe piosenki, która ma polskie znaki... zapisuje ją do tablicy, później odczytuje z tablicy, zapisuje do zmiennej, ale przy kopiowaniu nie może znaleść pliku bo zamiast polskich znaków skaczą jakieś krzaczki, a takiej ścieżki dostępu (z krzaczkami) niestety nie ma.

Ktoś potrafi coś zaradzić? :roll:


(Kstarski) #2

niestety nie pomoge zbyt konkretnie bo raczej nie pisze w pehapie, ale wydaje mi się że musisz go zmusic do pracy w unicode (UTF-8)

spróbuj dodać coś takiego na początku:

<? header('Content-Type: text/html; charset=utf-8'); ?>

i pogrzeb tutaj: http://pl.php.net/unicode

to tylko sugestia, nie wiem czy o to chodzi, ale zanim nie odpowie ktoś kto sie zna masz co robić :slight_smile:


(Xwars) #3
$plik = $tablica[$i];

Tu pewnie będziesz musiał dokonać zmiany kodowania, bo jest inne w systemie plików i playliście. czyli coś w stylu

$plik = iconv("ISO-8859-2","UTF-8",$tablica[$i]);

ewentualnie może "cp1250" zamiast iso8859-2 - nie wiem jakie jest kodowanie w plikach winampa.