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!
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.
Ich hoffe, das hilft.
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%Tags und Links python django sqlalchemy mysql-python latin1