[PHP] cp-1251decoding probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ben bezig een script te schrijven om vanaf internet mijn muziek te benaderen. (Om het vervolgens af te spelen en te streamen.)
Ik draai locaal apache/php onder windows XP.
Voor het browsen van mijn harde schijf maak ik een array van het programma 'dir', met wat argumenten. Voorbeeld:
code:
1
2
3
<?php
    $folders=explode("\n", `dir /a:d /o:n /b $workdir`);
?>

Werkt prima en na een aantal extra handelingen heb ik een prima lopend script.
Het probleem doet zich echter voor bij een aantal folders met bijzondere tekens erin. (bijvoorbeeld Múm wordt M£m).
Het probleem wordt veroorzaakt door de encoding van 'dir' ... als je namelijk 'dir > output.txt' doet en vervolgens output.txt opent met notepad dan worden de symbolen al verkeerd weergegeven. Na een aantal google queries ben ik erachter gekomen dat dit komt doordat de output cp-1251 ge-encode is.
Ik heb op een aantal manieren geprobeerd om het goed te krijgen, maar allen tot geen baat:
iconv() en html_entity_decode() werkten allebei niet. Ook een search op het tweakers board/google kon me niet verder helpen.
Het enige wat ik kan bedenken is om met str_replace() dit soort tekens aan te passen, maar dat is niet elegant en kan weer andere problemen veroorzaken.

Heeft er iemand raad of een oplossing?

Acties:
  • 0 Henk 'm!

  • megamuch
  • Registratie: Februari 2001
  • Laatst online: 08-12-2024

megamuch

Tring Tring!

Misschien niet helemaal het antwoord wat je zoekt, maar er zijn elegantere manieren om over een hdd te browsen via php.

(zie http://es.php.net/manual/en/function.is-dir.php en http://es.php.net/manual/en/class.dir.php)

Verstand van Voip? Ik heb een leuke baan voor je!


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

zou dit niet gewoon werken:
PHP:
1
htmlentities($foldername, ENT_COMPAT, 'cp1251');

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dank voor de replies:

De htmlentities() functie werkte helaas niet goed. Het tekentje veranderde wel, maar niet naar het juiste karakter.

De functie opendir() had ik helemaal in den beginne gebruikt en voldeet niet geheel aan mijn eisen. Echter, ik ben van mening herzien. Die functie an sich kan namelijk geen onderscheid maken tussen directories en files. Ik was me op dat moment niet bewust van het bestaan van de functie:
filetype().... Nu dus wel en dankzij volgende linkje (thanx megamuch): http://es.php.net/manual/en/function.opendir.php ga ik gewoon directories via php uitlezen. (Wat idd veel fraaier is) voorkomen is beter dan genezen.... Moet ik helaas wel mijn script aanpassen :'[

Bedankt voor de info!