Insbesondere verwende ich die webob
Bibliothek, wo ich ein ähnliches Problem geschrieben (https://github.com/Pylons/webob/issues/320), da ich nicht sicher bin, ob es meine Verwendung ist, oder ein Bug/Dokumentation AusgabeUnicodeEncodeError Disparität zwischen Code über django Testsuite vs django URL laufen
Nehmen sie den folgenden Code ein:
from webob.request import BaseRequest
req = BaseRequest.blank('http://example.com/%D0%B4%D1%8D%D0%BB%D1%8C%D1%8D%D0%BD%D0%B9%D1%82')
print req.environ['PATH_INFO']
print req.path
Wenn ich das über eine django Shell ausgeführt, erhalte ich:
>>> req = BaseRequest.blank('http://example.com/%D0%B4%D1%8D%D0%BB%D1%8C%D1%8D%D0%BD%D0%B9%D1%82')
>>> print req.environ['PATH_INFO']
/дэльэнйт
>>> print req.path
/%D0%B4%D1%8D%D0%BB%D1%8C%D1%8D%D0%BD%D0%B9%D1%82
Wo, wie es als par läuft t eines Falles Django Test ich folgendes aus dem ersten Druck erhalten:
/дÑлÑÑнйÑ
von der Ausnahme:
File "/code/frontend/tests/test_views.py", line 55, in test_event
print req.path
File "/virtualenv/frontend/local/lib/python2.7/site-packages/webob/request.py", line 485, in path
bpath = bytes_(self.path_info, self.url_encoding)
File "/virtualenv/frontend/local/lib/python2.7/site-packages/webob/descriptors.py", line 68, in fget
return req.encget(key, encattr=encattr)
File "/virtualenv/frontend/local/lib/python2.7/site-packages/webob/request.py", line 175, in encget
return val.decode(encoding)
File "/virtualenv/frontend/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-16: ordinal not in range(128)
ich, dass dies wahrscheinlich einige seltsame Konfiguration mit meinem Test-Suite ist jedoch beide über die gleiche Methode in der gleichen Umgebung laufen (Django manage.py test
vs manage.py shell
) und so bin ich schwer zu identifizieren, was anders ist. Wir führen auch eine Menge anderer Unicode-Tests ohne Probleme durch.
Vielen Dank für jedes Licht auf diese.
Ich habe versucht, diesen Fehler in meiner lokalen Umgebung zu reproduzieren: - Python interaktiv Shell - django interaktiv Shell - django Tests Alle diese ging gut. Verfügen Sie über eine testspezifische Konfiguration für die Codierung? Führen Sie alle diese Fälle im selben Terminal aus? – mateuszb
Danke für die Bestätigung, Es wurde an anderer Stelle darauf hingewiesen, dass ich "__future __. Unicode_literals" importiert habe, was wahr ist, und das Entfernen behebt das in diesem Beitrag beschriebene Problem, obwohl dieser Beitrag tatsächlich zu einer Abhängigkeit von django webtest führt Gesamtproblem ist nicht wirklich gelöst. Ich denke, Webtest selbst könnte Dinge auf eine Weise verschlüsseln, die ich nicht erwarte. Ich könnte dieses Problem schließen und eine bessere öffnen, die dem Umfang des ursprünglichen Problems entspricht. – DanH