我从讲师那里得到了一个简单的服务器文件示例。它对其他学生来说运行得很好,但是当我试图运行它时,我得到了一个错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 2: invalid start byte
错误指向代码中的这一行,其中服务器地址为('127.0.0.1',8080),另一个变量是一个具有“do_GET”和“do_POST”方法的类:
^{pr2}$最后指出:
File "C:\Users\hetle\Anaconda3\envs\untitled\lib\socket.py", line 673, in getfqdn
hostname, aliases, ipaddrs = gethostbyaddr(name)
我使用的是Anaconda 5.1版和Python3.6版。我也尝试过标准的Python解释器,但是有相同的错误。我已经确定没有其他服务器同时运行。在
我试过关闭所有我知道在后台运行的程序,重新启动计算机,查看任务管理器(并尝试关闭一些任务),尝试了不同的目录(文档)。我甚至尝试过重新安装Windows10(但保留了我的文件)。在
最奇怪的是,如果我将服务器的IP地址更改为127.0.0.2,它就可以正常工作了。是的,我曾通过电子邮件问过一个学生助理(但没有结果),也亲自问过讲师,他从来没有见过这样的错误。在
我发现我在ping 127.0.0.1时得到了回复,而且从127.0.0.2也收到了回复。在
我不能只使用127.0.0.2的原因是我有一个任务需要使用一个服务器(用于测试目的),它使用的是flask,而且我不能(据我所知)更改该服务器的IP。在
我完全确定问题不在代码中(因为它适用于其他学生),并且考虑到我已经重新安装了Windows10,删除了所有的应用程序和程序,除了所有的Windows设置都恢复到默认值之外,我不知道可能是什么问题。在
127.0.0.1是否应该在“全新”安装Windows后不执行任何操作来回复ping?如果没有,我怎样才能知道答案呢?如果是,有什么问题?我的硬件,低级别的Windows文件或者其他什么问题吗?在
def main():
server_address = ('127.0.0.1', 8080)
httpd = HTTPServer(server_address, myHTTPServer_RequestHandler)
print("running server...")
httpd.serve_forever()
Traceback (most recent call last):
File "C:/Users/hetle/Onedrive-UIS/OneDrive – Universitetet i Stavanger/DAT310 WebP/PyCharm-Projects/Exercises/Web-protocols/server.py", line 48, in <module>
main()
File "C:/Users/hetle/Onedrive-UIS/OneDrive – Universitetet i Stavanger/DAT310 WebP/PyCharm-Projects/Exercises/Web-protocols/server.py", line 42, in main
httpd = HTTPServer(server_address, myHTTPServer_RequestHandler)
File "C:\Users\hetle\Anaconda3\envs\untitled\lib\socketserver.py", line 453, in __init__
self.server_bind()
File "C:\Users\hetle\Anaconda3\envs\untitled\lib\http\server.py", line 138, in server_bind
self.server_name = socket.getfqdn(host)
File "C:\Users\hetle\Anaconda3\envs\untitled\lib\socket.py", line 673, in getfqdn
hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf8 in position 2: invalid start byte
您使用的是python的Unicode
这里\U是一种Unicode,您已经在C:\Users中使用过。因此python将is视为Unicode,因此只要将其转换为/就可以解决这个问题。在
^{pr2}$示例:>;
示例2:>;
我没有windows机器,所以我不能做一些检查,但听起来你的计算机名可能有一些“特殊”字符,而Python不喜欢它。在
编辑:
似乎确实存在一个与您的问题有关的现有缺陷: https://bugs.python.org/issue9377
我的建议是:
确保名称仅包含ASCII(非扩展)字符。在
相关问题 更多 >
编程相关推荐