1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

URI Umwandlung, vom Browser ins OS X Format

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von FirePot, 18.12.06.

  1. FirePot

    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
     
  2. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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 ö
     
    #2 Skeeve, 18.12.06
    Zuletzt bearbeitet: 18.12.06
    1 Person gefällt das.
  3. FirePot

    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 ;)
     
  4. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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?
     
  5. FirePot

    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 ;)
     
  6. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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, ' ');
     
  7. FirePot

    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.
     

Diese Seite empfehlen