Hallo,
<?xml version="1.0" encoding="utf-8"?>
<player autoStart="no" showPlaylist="yes" showDisplay="yes" skinColor="">
<song path="http%3A//www.shanty-chor-kieler-foerde.de/Kieler+F%C3%B6rde.mp3" title="Kieler Förde - Shanty-Chor „Kieler Förde'" />
</player>
das ist schon kaputt. Warum ist der Doppelpunkt nach "http" maskiert?
> Der PLayer spielt das nicht.
Würde ich auch nicht. ;-)
> Ich habe den Verdacht, dass der Player keine Umlaute in der URL versteht.
Das glaube ich nicht, aber ob es daran liegt, kannst du ja leicht mit einem Gegenbeispiel ohne Umlaute ausprobieren. Interessant ist hier höchstens, ob im Dateisystem des Servers UTF-8 verwendet wird (dann wäre %C3%B6 richtig), oder irgendeine ISO-Codierung mit nur einem Byte pro Zeichen (dann wäre %F6 zu verwenden).
> ~~~php
$arr_a = explode('//',$row['url']);
> $url_encoded = $arr_a[0]."/";
> $arr_b = explode('/',$arr_a[1]);
> foreach($arr_b AS $i => $name) {
> $url_encoded .= "/".str_replace(' ','+',utf8_decode($name));
> }
> echo "[".$url_encoded."]<br>";
Sehr eigenartig. Du trennst erst das Präfix "http:" ab, machst daraus "http:/" und splittest den Rest nochmal an jedem '/' auf. Dann setzt du die Teile wieder zusammen - wozu hier das utf8_decode()?
Außerdem kann ich hier nichts entdecken, was "http:" zu "http%3A" entstellt.
Beim Anschauen der XML-Datei mit dem Notepad++ steht anstelle des ö ein markiertes xF6
Also geht NP++ davon aus, die Datei sei in UTF-8 codiert (was für XML auch Standard ist), das ö ist aber in Wirklichkeit in ISO-Latin codiert. Daran dürfte das IMO unlogische utf8_decode() schuld sein.
aber der Unterstrich, der eine URL markiert, hört davor auf. Auch Notepad kömmt also mit dem Umlaut in der URL nicht klar. Mit Leerzeichen übrigens auch nicht.
Nein. NP++ erklärt die URL da als beendet, wo ein illegales Zeichen auftritt. Das ist im einen Fall eine Bytesequenz, die in UTF-8 nicht vorkommen darf (ein einzelnes 0xF6), andererseits ein Leerzeichen.
Das Leerzeichen muss in URLs als '+' (im Query-String) oder als %20 codiert werden (wobei %20 im Query-String nach meiner Erfahrung auch funktioniert).
So long,
Martin
Die letzten Worte des Neandertalers:
Möchte doch zu gern wissen, was in der Höhle ist ...
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(