[bottle] Umlaute in URL

Django, Flask, Bottle, WSGI, CGI…
Antworten
blenderman
User
Beiträge: 4
Registriert: Donnerstag 14. Januar 2010, 08:54

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
blenderman
User
Beiträge: 4
Registriert: Donnerstag 14. Januar 2010, 08:54

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?
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

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.
Antworten