UnicodeEncodeError: Code '' latin-1 '' kann Zeichen in Position 0-1 nicht codieren: Ordnungszahl nicht im Bereich (256)

9

Ich bin ein neuerer in python.Heute, wenn ich eine Suchfunktion schreibe traf ich einen error.well, verwende ich sqlalchemy orm, um das zu tun, in meiner Funktion, gebe ich ein chinesisches Wort als das Schlüsselwort.Die HTML-Seite geben mir ein UnicodeEncodeError bei / user / search: 'Latin-1' Codec kann nicht codieren Zeichen in Position 0-1: Ordinal nicht im Bereich (256). und mein Code ist so:

%Vor%

und die Rückverfolgung ist hier:

%Vor%

wenn ich den Fehler gefunden habe, habe ich einen Test in Python-Shell, es hat gut funktioniert, der Code ist hier:

  
    
      

aus apps.user.models importieren Benutzer       user = Benutzername.get_by_name ('某人') .first ()       Benutzer drucken                  print Benutzer.Name           某人

    
  

Also, was kann ich tun, damit es in meiner HTML-Seite funktioniert? Vielen Dank!

    
jiank 06.05.2013, 07:48
quelle

2 Antworten

23

Ich nehme an, dass Sie hier MySQL mit dem MySQLdb-Treiber verwenden.

Die vom MySQLdb-Treiber verwendete Standardcodierung ist latin-1, die Ihren Zeichensatz nicht unterstützt. Sie müssen UTF-8 (oder andere, UTF-8 ist am häufigsten) verwenden, um mit Ihrer Datenbank über MySQLdb kommunizieren zu können (siehe Ссылка ).

Um so etwas zu machen, erstellen Sie Ihre Engine mit der folgenden Zeile:

%Vor%

Sie können Ihre Engine-URL auch mit der Klasse sqlalchemy.engine.url.URL erstellen und an die Funktion create engine senden. Ich finde es nützlich, wenn Sie Ihre Einstellungen in einer Konfigurationsdatei haben.

%Vor%

Ich hoffe, das hilft.

    
Balthazar Rouberol 06.05.2013, 17:40
quelle
3

Basierend auf Ihrem Stacktrace verwenden Sie MySQL Python mit aktivierter Unicode-Codierung, da es eine Codierung durchführt. Daher müssen Sie wahrscheinlich eine kompatible Kodierung angeben (beachten Sie, dass dies alle Einstellungen sind, die von der MySQLdb-DBAPI verwendet werden, SQLalhcemy übergibt sie einfach):

%Vor%

Ссылка

    
zzzeek 06.05.2013 17:25
quelle