Tengo un formulario simple que envía una imagen a la tienda de blob y un título para la imagen. Esto funciona en mi devserver local, pero cuando despliego mi código, las letras que no son ascii en el título se confunden con algún tipo de mezcla de ascii y hexadecimal. Por ejemplo Ísland se convierte = CDsland. Tenga en cuenta que estoy usando <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
como el primer valor en el encabezado. También utf-8 funciona para todas mis otras formas. Solo la forma multiparte que se confunde. De todas formas este es mi forma:Problema de codificación en el motor de la aplicación al enviar formularios multipart/form-data
<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>
Y esta es la clase de manejo de la forma:
# 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()
¿Alguien tiene una idea de cómo puedo solucionar este problema? ¿Tengo que hacer algo de codificación/decodificación del lado del servidor? He intentado buscar en Google sin obtener resultados (python newb), así que este es mi último recurso antes de modificar mi diseño y dividir los formularios.
¿Qué estás usando para determinar lo que el título está en el servidor? ¿Y esto funciona si publicas directamente en un controlador, sin usar blobstore? –
El hecho de que la etiqueta del tipo de meta contenido esté presente en la parte superior del encabezado HTML es completamente irrelevante siempre que su página web se publique a través de HTTP. Un webbrowser decente usará el que está en el encabezado de respuesta HTTP. Ver también especificación w3 http://www.w3.org/TR/html4/charset.html#h-5.2.2 – BalusC
Por ahora, parece que el SDK 1.7.2 aún no está arreglado, pero el comportamiento de producción cambió ligeramente: 'Ísland 'se convierte en' zXNsYW5k '. unicode (base64.b64decode ('zXNsYW5k'), 'iso_8859-2') – keiw