Django:'ascii'编解码器无法解码位置1035中的字节0xc3:序数不在范围内(128)

时间:2014-08-16 12:37:33

标签: python django encoding nginx utf-8

Django 1.6 Python 3 Nginx,uWsgi

有关于此错误的视图主题,但解决方案不适用于我。

我有一个Web应用程序,可以在tar-archive中上传xml文件以进行导入。

在使用“python manage.py runserver”运行应用程序的本地计算机上进行开发时,导入过程运行完美无缺。当使用Nginx和uWsgi在vServer上运行应用程序时,我收到此错误:

UnicodeDecodeError at /sync/upload/
'ascii' codec can't decode byte 0xc3 in position 1035: ordinal not in range(128)

错误发生在我写的最后一行和从那里运行的代码:

xml = f.read() <- My line
return codecs.ascii_decode(input, self.errors)[0]

由于整个事情在我的系统上吵架而不是在vps上,我认为问题是某种配置问题。到目前为止,我已尝试在nginx启动之前设置LANG和LC_ALL,并在“open(xmlfile)为f”时提供encoding ='utf-8'属性。还有许多尝试手工编码的不同方法。

所以我知道我没有选择。

我在瑞士使用en_US.UTF-8 ArchLinux机器工作。 VPS是一个Debian机器,我不知道如何配置默认字符集,如果这甚至是相关的。欢迎任何帮助。

谢谢和问候, 阿德里安

1 个答案:

答案 0 :(得分:0)

您明确使用ascii_decode。所以语言设置超出了范围。 ascii_decode可以解码0..127范围内的字节。但是0xc3 = 195&gt; 127.因此,您正在使用另一个文件测试您的服务器,该文件包含值为&gt;的字节。 127.通常,xml读取器占用字节而不是字符串,因此不需要解码,因为编码是在xml文件中给出的。