在pycharm中运行代码示例是提示编码错误代码如下:
#!/usr/bin/env python
# -*-coding:utf-8-*-
from wsgiref.simple_server import make_server
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return [b'<h1>Hello, web!</h1>']
httpd = make_server('', 8080, application)
print("Serving http on port 80000")
httpd.serve_forever()
提示错误如下:
Traceback (most recent call last):
File "D:/学习笔记/python/练习目录/前端/练习.py", line 24, in <module>
httpd = make_server('', 8080, application)
File "C:\python\python36\lib\wsgiref\simple_server.py", line 153, in make_server
server = server_class((host, port), handler_class)
File "C:\python\python36\lib\socketserver.py", line 453, in __init__
self.server_bind()
File "C:\python\python36\lib\wsgiref\simple_server.py", line 50, in server_bind
HTTPServer.server_bind(self)
File "C:\python\python36\lib\http\server.py", line 138, in server_bind
self.server_name = socket.getfqdn(host)
File "C:\python\python36\lib\socket.py", line 673, in getfqdn
hostname, aliases, ipaddrs = gethostbyaddr(name)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcb in position 0: invalid continuation byte
反正就是编码错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 0: invalid continuation byte
Python3默认的是utf-8编码,中国程序员最苦逼的地方就是中文,程序遇到中文极大可能性会报错。出现编码问题,说明解码方式不对,可能是utf8解码中文出错,接着确认哪里出了问题。错误提示发现是 hostname, aliases, ipaddrs = gethostbyaddr(name)这句代码出了错误,这句代码是个函数,函数有参数,那先从参数入手,参数是name,那可能name是个中文,但是我的程序命名都是英文,那应该不是我的程序命名问题。经研究错误提示发现gethostbyaddr()函数是中文翻译就是获取主机地址,而传参是名字,那么name传入的就是主机名,也就是我们电脑名。我的电脑名是中文,是不是改成英文就可以了,经测试发现的确是主机中文名导致的
改完主机名之后代码运行如下:
问题,改成英文名即可顺利启动本地服务器。