简体   繁体   English

Python UnicodeDecodeError:'ascii'编解码器无法解码位置12的字节0xd0:序数不在范围内(128)

[英]Python UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 12: ordinal not in range(128)

I am trying to return a file in a StreamingHttpResponse from a class based view using Django rest framework. 我正在尝试使用Django rest框架从基于类的视图中返回StreamingHttpResponse的文件。 However I get a very cryptic error message with a stack trace that does not contain any references to my code: 但是,我得到了一个非常隐秘的错误消息,该消息带有不包含对我的代码的任何引用的堆栈跟踪:

16/Jun/2017 11:08:48] "GET /api/v1/models/49 HTTP/1.1" 200 0
Traceback (most recent call last):
  File "/Users/jonathan/anaconda/lib/python3.6/wsgiref/handlers.py", line 138, in run
    self.finish_response()
  File "/Users/jonathan/anaconda/lib/python3.6/wsgiref/handlers.py", line 179, in finish_response
    for data in self.result:
  File "/Users/jonathan/anaconda/lib/python3.6/wsgiref/util.py", line 30, in __next__
    data = self.filelike.read(self.blksize)
  File "/Users/jonathan/anaconda/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 12: ordinal not in range(128)

[...]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jonathan/anaconda/lib/python3.6/wsgiref/handlers.py", line 141, in run
    self.handle_error()
  File "/Users/jonathan/anaconda/lib/python3.6/site-packages/django/core/servers/basehttp.py", line 88, in handle_error
    super(ServerHandler, self).handle_error()
  File "/Users/jonathan/anaconda/lib/python3.6/wsgiref/handlers.py", line 368, in handle_error
    self.finish_response()
  File "/Users/jonathan/anaconda/lib/python3.6/wsgiref/handlers.py", line 180, in finish_response
    self.write(data)
  File "/Users/jonathan/anaconda/lib/python3.6/wsgiref/handlers.py", line 274, in write
    self.send_headers()
  File "/Users/jonathan/anaconda/lib/python3.6/wsgiref/handlers.py", line 331, in send_headers
    if not self.origin_server or self.client_is_modern():
  File "/Users/jonathan/anaconda/lib/python3.6/wsgiref/handlers.py", line 344, in client_is_modern
    return self.environ['SERVER_PROTOCOL'].upper() != 'HTTP/0.9'
TypeError: 'NoneType' object is not subscriptable

My get method looks like this: 我的get方法如下所示:

def get(self, request, pk, format=None):
    """
    Get model by primary key (pk)
    """
    try:
        model = QSARModel.objects.get(pk=pk)
    except Exception:
        raise Http404
    filename = model.pluginFileName
    chunk_size = 8192
    response = StreamingHttpResponse(
                   FileWrapper( open(filename), chunk_size ),
                   content_type = 'application/zip' )
    return response

From googling a bit I get the feeling that this is related to ASCII / UTF8 encoding but I don't understand how that applies to my situation. 从谷歌搜索一下,我感觉到这与ASCII / UTF8编码有关,但是我不明白这对我的情况有何影响。 I am dealing with a binary file. 我正在处理一个二进制文件。 In fact it is a Java jar file but that should be pretty much a zip file as far as I understand. 实际上,这是一个Java jar文件,但据我所知应该几乎是一个zip文件。 What is going on here and what am I doing wrong? 这是怎么回事,我在做什么错?

this is related to language translation. 这与语言翻译有关。 when non ascii filenames with the django storage system. Django存储系统使用非ascii文件名时。 So add following lines in your apache envvars 因此,请在您的Apache envvars中添加以下行

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

https://code.djangoproject.com/wiki/django_apache_and_mod_wsgi#AdditionalTweaking https://code.djangoproject.com/wiki/django_apache_and_mod_wsgi#AdditionalTweaking

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Python:UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xd0:序数不在范围内(128) - Python: UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128) snapcraft 给出“ascii”编解码器无法解码位置 0 中的字节 0xd0:序号不在范围内(128) - snapcraft gives 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128) UnicodeDecodeError:“ascii”编解码器无法解码位置 2 中的字节 0xd1:序数不在范围内(128) - UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 2: ordinal not in range(128) Python,UnicodeDecodeError:'ascii'编解码器无法解码位置1718的字节0xc2:序数不在范围内(128) - Python, UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1718: ordinal not in range(128) UnicodeDecodeError:'ascii' 编解码器无法解码位置 14 中的字节 0xe2:在 GAE python 中序号不在范围内(128)? - UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 14: ordinal not in range(128) in GAE python? Python UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xe2:序数不在范围内(128) - Python UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) (python/boto sqs)UnicodeDecodeError:“ascii”编解码器无法解码位置 5 中的字节 0xc3:序号不在范围内(128) - (python/boto sqs) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128) Python:UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xef:序数不在范围内(128) - Python: UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128) Python中的孟加拉语编码-UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xe0:序数不在范围内(128) - bangla encoding in Python - UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128) Python 3 UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xe2:序数不在范围内(128) - Python 3 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM