Seite 1 von 1

[bottle] Umlaute in URL

Verfasst: Samstag 29. Mai 2010, 13:54
von blenderman
Hallo Miteinander,

mein erstes Bottle Script ist ein lokaler Webdienst zum Steuern von Windowsdiensten. Zum Beispiel kann man unter http:\\localhost:8080\restart\:name einen Dienst neustarten. Leider sind bei Windowsdienstnamen auch Umlaute zugelassen.

Die bisherige Lösung ist, auf der Indexseite die URL per urllib.quote_plus zu codieren. Auf der Indexseite wird sie per urllib.unquote wiederherrgestellt. Wer die URL aber manuell eintippen möchte, hat es schwer.

Gibt es für http:\\localhost:8080\restart\:name eine Möglichkeit das man für :name ganz Normal Umlaute eintippt?

Vielen Dank,
Oli

Re: [bottle] Umlaute in URL

Verfasst: Samstag 29. Mai 2010, 18:59
von blenderman
So klappt es: Zuerst decode("utf-8"), dann den service neustarten, dann encode("iso-8859-1") für die Ausgabe per Return.

Code: Alles auswählen

@route("/restart/:name")
def restart(name):
    MyService = name.decode("utf-8")
    try:
        win32serviceutil.RestartService(MyService, MyMachine)
        MyService = MyService.encode("iso-8859-1")
        return "%s Service is restart" % MyService
    except:
        MyService = MyService.encode("iso-8859-1")             
        return "Sorry, there is an Error with %s" % MyService
Stimmt das so?

Re: [bottle] Umlaute in URL

Verfasst: Sonntag 30. Mai 2010, 11:12
von Darii
blenderman hat geschrieben:Gibt es für http:\\localhost:8080\restart\:name eine Möglichkeit das man für :name ganz Normal Umlaute eintippt
Allgemein nicht. Kann sein, dass dein Browser das für dich kodiert. Dann ist aber nicht festgelegt, welche Kodierung verwendet wird. Da ist raten und hoffen angesagt, dass sich die nie ändert. Bei mir verwendet der Browser utf8.