• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick

URI Umwandlung, vom Browser ins OS X Format

  • Ersteller FirePot
  • Erstellt am

FirePot

Gast
Hallo,

ich zerbreche und suche mir schon seit knapp 3 Stunden den Kopf wund ;) Folgendes: Ich bin gerade an einem Widget, das Sachen per FTP hochläd. Javascript bietet im Webkit die Eigenschaft des Drag and Drop zu benutzen. Als Parameter bekommt man dann eine liste mit den Dateien, also z.B.
Code:
file://localhost/Users/Test%20Datei.jpg
Genau da liegt der Knackpunkt. Ich muss die URIs um die im Terminal zu benutzen ins OSX Format bringen, nur die Frage wie: Ich habe nach kurzem suchen im Internet eine Javascript-Converter gefunden, der allerdings nicht richtig funktioniert, dank Enkodierung. Hat einer von euch eine Idee, die halbwegs einfach ist?! Wäre super froh wenn das so ist ;)

Danke schon einmal

Nelson

P.S.: Was ich mein: In URIs wird z. B. ö zu "%CC%88" und "%CC%88" muss ich wieder zu ö konvertieren
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Wenn Du es eh im Terminal benutzt:
Code:
echo "DEINEURL" | perl -pe 's/%(..)/pack("H2",$1)/ge;'
Allerdings wird aus %CC%88 nur die Umlautpunkte und nicht ö
 
Zuletzt bearbeitet:
  • Like
Reaktionen: 1 Person

FirePot

Gast
Danke, sorry habe das falsch erläutert, in der URI steht dann "o%CC%88" und daraus wird dann "ö", also funktioniert es, danke vielmals. Gott sei Dank gibt es ja noch so Unix "Junkies" wie dich da draußen, die einem so gut helfen können ;) Vllt kannst du mir den Code etwas erläutern, ich wende nur ungern Sachen an, die ich nicht mindestens im Ansatz verstehe, Danke auch hier schon einmal

Nelson

P.S.: Wenn ichs hinbekomm und das Widget läuft verewige ich dich i-wie in einem Easteregg ;)
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Vllt kannst du mir den Code etwas erläutern, ich wende nur ungern Sachen an, die ich nicht mindestens im Ansatz verstehe,
Code:
echo "DEINEURL" # Ist bekannt, oder? Gibt DEINEURL einfach aus
|               # und gibt das Ausgegebene weiter an
perl            # das mit dem Parameter
-p              # jede Eingabezeile verarbeitet & ausgibt und mit dem Parameter
-e              # das Programm (eine Zeile davon) im folgenden Parameter erwartet
                # der folgt nun
's/%(..)/pack("H2",$1)/ge;' # s.u.
s/irgendwas/anderes/g sucht "irgendwas" und ersetzt es duch "anderes" g-lobal, also in der gesamten Zeile (genauer in der Variablen $_, aber das nur zur Info).

irgendwas ist im aktuellen Beispiel %(..) dabei bedeutet % nur das Zeichen %, es wird also nach einem Prozentzeichen gesucht. Die () bedeutet, daß das, was innerhalb der Klammer gesucht und gefunden wird, gespeichert wird, man kann es also im Ersetzteil referenzieren. In diesem Fall über $1, da es die erste Klammer ist.

Gesucht wird innerhalb der Klammer nach .. was in regulären Ausdrücken für 2 beliebige Zeichen außer \n steht (. steht für ein beliebiges Zeichen).

Es sucht also alle %xx Zeichenfolgen und speichert xx in $1.

Im Ersetzteil steht pack("H2", $1). Folglich würde jetzt da der Text pack(... eingefügt werden. Das wäre Humbug ;) Dafür steht noch das kleine "e" am Ende. "e" wie execute. Der Ersetzteil wird ausgeführt. Um es kurz zu machen: Dies pack macht aus dem Hexcode (unser xx) das zugehörige Zeichen.

Viel Erklärung für Wenig Programm.. Hilft's trotzdem?
 

FirePot

Gast
Ok! Danke ich habs verstanden, Unix ist mir ja nicht ganz fern, also den echo Kram verstehe ich noch ;) ebenso kann ich mit dem Terminal was in die Zwischenablage kopieren, aber das da oben war mir dann was zu hoch, zumal das Ganze ja wohl Perl ist. Also nochmals vielen Dank, wenns soweit ist meld ich mich per PN bei dir, dann gibste mir deinen vollen Namen und du kommst ins EasterEgg ;)
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Nachtrag, nach diversen PNen: Da es sich um ein Widget dreht und die oft in JavaScript geschrieben werden, läßt sich die mit JavaScript ganz einfach so knovertieren:
Code:
var unkodiert= unescape( kodiert ).replace( /\+/g, ' ');
 

FirePot

Gast
allerdings mit leichten "Anzeigefehlern". Wohl im Hex Code korrekt, wird aber wenn man es auf i-einer Ebene ausgibt meist falsch angezeigt, zumindest ä,ö,ü. Bei der obigen Lösung wird alles richtig angezeigt.