Ich habe ein einfaches Formular, das ein Bild an den Blobstore und einen Titel für das Bild übermittelt. Dies funktioniert auf meinem lokalen devserver, aber wenn ich meinen Code bereitstellen, werden nicht-ASCII-Buchstaben im Titel mit einer Art Mischung aus ASCII und Hex verzerrt. Zum Beispiel wird Island zu = CDland. Hinweis: Ich verwende <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
als ersten Wert in der Kopfzeile. Auch utf-8 funktioniert für alle meine anderen Formen. Nur die mehrteilige Form, die verstümmelt wird. Auch immer das ist meine Form:Codierung Problem in der App-Engine beim Senden von Multipart/Formulardatenformularen
<form action="{{ uploadurl }}" enctype="multipart/form-data" method="post">
<div><label>Title</label><input type="text" name="title" class="string" /></div>
<div><label>Picture</label><input type="file" name="img"/></div>
<div style="margin-top:10px;"><input type="submit" value="Add picture" /></div>
<input type="hidden" value="{{ album.key }}" name="alid"/>
</form>
Und das ist die Klasse Umgang mit der Form:
# handler for posting photos
class PostPhoto(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
upload_files = self.get_uploads('img')
photourl = images.get_serving_url(str(upload_files[0].key()))
photo = Photo()
#because of multipart/form-data
photo.title = self.request.get("title")
photo.photourl = photourl
photo.photoalbum = PhotoAlbum.get(self.request.get('alid'))
photo.put()
Hat jemand eine Ahnung, wie ich dieses Problem beheben? Muss ich eine serverseitige Kodierung/Dekodierung durchführen? Ich habe versucht, dafür googeln ohne Ergebnis (Python Newb), so ist dies meine letzte Zuflucht, bevor ich nur mein Design ändern und die Formulare aufteilen.
Was verwenden Sie zu bestimmen, was der Titel auf dem Server? Und funktioniert das, wenn Sie direkt an einen Handler posten, ohne blobstore zu verwenden? –
Dass das Meta-Content-Type-Tag oben im HTML-Header vorhanden ist, ist völlig unkritisch, wenn Ihre Webseite über HTTP bedient wird. Ein bisschen anständiger Webbrowser wird stattdessen den im Header der HTTP-Antwort verwenden. Siehe auch w3 spec http://www.w3.org/TR/html4/charset.html#h-5.2.2 – BalusC
Momentan ist SDK 1.7.2 noch nicht installiert, aber das Produktverhalten hat sich leicht geändert: 'Island 'wird' zXNsYW5k '. Unicode (base64.b64decode ('zXNsYW5k'), 'iso_8859-2') – keiw