Wie löst man einen UnicodeDecodeError?

7

Ich bekomme eine merkwürdige Fehlermeldung, wenn ich versuche, nicht-ASCII aus dem Datenspeicher zu lesen:

%Vor%

Die früher übliche Schleife ist gewöhnlich:

%Vor%

Was kann ich tun, um diesen Fehler zu beheben?

Mein Handler sieht so aus

%Vor%

Und meine Modelldefinition ist das Benutzermodell von webapp2. Hier ist auch mein benutzerdefinierter Filer makeid:

%Vor%

Aktualisieren

Die Problemumgehung ist seltsam, ich mache nur eine .decode('utf-8') , die das nicht tun sollte:

%Vor%

Gibt es eine Möglichkeit, alle Variablen des Benutzerobjekts auf einmal zu dekodieren statt einzeln?

    
Niklas Rosencrantz 08.01.2012, 21:50
quelle

3 Antworten

9

Sie versuchen, eine rohe (Byte-) Zeichenfolge in eine Unicode-Vorlage zu interpolieren. Dies geschieht, indem versucht wird, die rohe Zeichenkette mit Hilfe einer Codierung in Unicode zu dekodieren - hier die Standardcodierung "ascii" - die fehlschlägt, weil sie auf einen Codepunkt trifft, der für ASCII nicht gültig ist.

Um dies zu beheben, müssen Sie nur Unicode-Strings in Ihre Vorlage übergeben - dekodieren Sie die Zeichenfolge mit dem richtigen Codec, bevor Sie sie übergeben.

    
Nick Johnson 08.01.2012, 23:17
quelle
7

Am besten ist es, die Zeichenfolge in den ASCII-Zeichensatz zu konvertieren. Sie können die Funktion python encode cgi verwenden, um in ASCII

zu konvertieren %Vor%

Beispiel

    
Sallu 13.01.2012 19:43
quelle
3

Übergeben Sie den Text / HTML, den Sie als Unicode an die Vorlage übergeben, und Sie sollten sehen, dass er verschwindet. Habe dieses Problem vorher mit Django-Vorlagen in GAE mit webapp2 gehabt.

    
David Haddad 08.01.2012 22:55
quelle