带有runserver的Unicodedecodeerror

时间:2014-04-16 12:17:14

标签: python django python-3.x

在设置django所需的全部内容之后,我尝试了runserver命令并发现错误:

  

UnicodeDecodeError :'utf-8'编解码器无法将字节0xcf解码到位   8:无效的连续字节

自:

c:\sue>python manage.py runserver
Validating models...

0 errors found
April 16, 2014 - 15:02:42
Django version 1.6.2, using settings 'sue.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x0000000003890048>
Traceback (most recent call last):
  File "C:\python34\lib\site-packages\django\utils\autoreload.py", line 93, in wrapper fn(*args, **kwargs)
  File "C:\python34\lib\site-packages\django\core\management\commands\runserver.py", line 127, in inner_run ipv6=self.use_ipv6, threading=threading)
  File "C:\python34\lib\site-packages\django\core\servers\basehttp.py", line 167, in run httpd = httpd_cls(server_address, WSGIRequestHandler, ipv6=ipv6)
  File "C:\python34\lib\site-packages\django\core\servers\basehttp.py", line 109, in __init__ super(WSGIServer, self).__init__(*args, **kwargs)
  File "C:\python34\lib\socketserver.py", line 430, in __init__ self.server_bind()
  File "C:\python34\lib\site-packages\django\core\servers\basehttp.py", line 113, in server_bind super(WSGIServer, self).server_bind()
  File "C:\python34\lib\wsgiref\simple_server.py", line 50, in server_bind HTTPServer.server_bind(self)
  File "C:\python34\lib\http\server.py", line 137, in server_bind
    self.server_name = socket.getfqdn(host)
  File "C:\python34\lib\socket.py", line 460, in getfqdn
    hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 8: invalid continuation byte

我使用的是Windows 7 x64,python 3.4和django 1.6.2。这个错误意味着什么?

3 个答案:

答案 0 :(得分:11)

这听起来像this Python issue。如果您的计算机名称具有非ASCII字符,则此操作将失败。你可以:

  1. 使用显式主机和端口发出runserver命令:python manage.py runserver 127.0.0.1:8000
  2. 将您的计算机名称更改为仅包含ASCII字符的字符串。

答案 1 :(得分:1)

我刚遇到这个问题,因为我不小心使用https而不是http来访问该网站。切换回http修复它。

答案 2 :(得分:0)

我在python 3.4上遇到了这个问题,情况如下:

  • 服务器确实有一个仅支持ascii的主机名(如host1
  • / etc / hosts文件不包含主机名
  • 的条目
  • 没有可用的DNS解析器(离线计算机)

将以下条目添加到/etc/hosts文件后,不再引发UnicodeDecodeError个例外。

127.0.0.1 localhost host1