unicodedecodeerror not 0xff 0xf3 0xe2 0xe1 0xc2 0xa4 python django google-app-engine

python - 0xff - unicodedecodeerror ascii codec can t decode byte 0xf3 in position 30 ordinal not in range 128



UnicodeDecodeError: el códec ''ascii'' no puede decodificar el byte 0xe0 en la posición 0: el ordinal no está dentro del rango(128) (5)

En una de mis máquinas tengo el error cuando estoy trabajando con el motor de aplicaciones de google o django.

Por ejemplo:

  • app.yaml

    application: demas1252c version: 1 runtime: python api_version: 1 handlers: - url: /images static_dir: images - url: /css static_dir: css - url: /js static_dir: js - url: /.* script: demas1252c.py

  • demas1252c.py

    import cgi import wsgiref.handlers from google.appengine.ext.webapp import template from google.appengine.ext import webapp class MainPage(webapp.RequestHandler): def get(self): values = {''id'' : 10} self.response.out.write(template.render(''foto.html'', values)) application = webapp.WSGIApplication([(''/'', MainPage)], debug = True) wsgiref.handlers.CGIHandler().run(application)

  • foto.html

    <!DOCTYPE html> <html lang="en"> <head></head> <body>some</body> </html>

mensaje de error:

C:/artefacts/dev/project>"c:/Program Files/Google/google_appengine/dev_appserver.py" foto-hosting Traceback (most recent call last): File "c:/Program Files/Google/google_appengine/dev_appserver.py", line 69, in <module> run_file(__file__, globals()) File "c:/Program Files/Google/google_appengine/dev_appserver.py", line 65, in run_file execfile(script_path, globals_) File "c:/Program Files/Google/google_appengine/google/appengine/tools/dev_appserver_main.py", line 92, in <module> from google.appengine.tools import dev_appserver File "c:/Program Files/Google/google_appengine/google/appengine/tools/dev_appserver.py", line 140, in <module> mimetypes.add_type(mime_type, ''.'' + ext) File "C:/Python27/lib/mimetypes.py", line 344, in add_type init() File "C:/Python27/lib/mimetypes.py", line 355, in init db.read_windows_registry() File "C:/Python27/lib/mimetypes.py", line 260, in read_windows_registry for ctype in enum_types(mimedb): File "C:/Python27/lib/mimetypes.py", line 250, in enum_types ctype = ctype.encode(default_encoding) # omit in 3.x! UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xe0 in position 0: ordinal not in range(128)

Cuando estoy trabajando con archivos estáticos en django (sin gae) tengo un error muy similar (con diferente pila).

Traté de encontrar el motivo del error y agregué el código a mimetypes.py:

print ''====='' print ctype ctype = ctype.encode(default_encoding) # omit in 3.x!

Luego recibo los próximos mensajes en mi consola:

===== video/x-ms-wvx ===== video/x-msvideo ===== рєфшю/AMR Traceback (most recent call last):

En el registro HKCR / Mime / Database / ContentType / Tengo cinco claves con letras rusas (cirílicas). ¿Pero cómo puedo solucionar este error?


Es un error de Python con los timos MIME latinos en el registro que comienzan a regedit e inspeccionan "HKEY_CLASSES_ROOT / MIME / Database / Content Type" para nombres que no sean latinos.


Este es un error en mimetypes , desencadenado por datos incorrectos en el registro. ( рєфшю/AMR no es para nada un tipo de medio MIME válido).

ctype es un nombre de clave de registro devuelto por _winreg.EnumKey , que mimetypes espera ser una cadena Unicode, pero no lo es. A diferencia de _winreg.QueryValueEx , EnumKey devuelve una cadena de bytes (directa de la versión ANSI de la API de Windows; _winreg en Python 2 no utiliza las interfaces Unicode aunque devuelve cadenas Unicode, por lo que nunca leerá caracteres no ANSI correctamente )

¡Así que el intento de .encode falla con un error de decodificación Unicode al tratar de obtener una cadena Unicode antes de codificarla nuevamente en ASCII!

try: ctype = ctype.encode(default_encoding) # omit in 3.x! except UnicodeEncodeError: pass

Estas líneas en mimetypes simplemente deberían eliminarse.

ETA: agregado al rastreador de errores .



Por cierto, el principal punto culminante del problema es QuickTime, que agrega tipos no miméticos al registro de Windows. La forma más fácil de solucionarlo es encontrar y eliminar manualmente del registro las subsecciones de HKCR/Mime/Database/ContentType/ comenzando con аудио/ y видео/ .