37,745
社区成员




import requests #调用requests库
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html')
#获取网页源代码,得到的res是response对象
print(res.status_code) #检查请求是否正确响应
html = res.text #把res的内容以字符串的形式返回
print(html)
既然能运行,代码就没问题,vscode设置ok,请卸载vscode中你不小心安装的代码检查的扩展就好了。一堆垃圾检查扩展其实乱检查。我的代码也是,本来在其他地方都正常,放vscode一堆问题警告,还有一个什么错误。我把不小心安装的代码检查扩展卸载了就ok了。主要就是那个Flake8.流氓的代码检查扩展。一丢丢问题完全不影响的问题,都给你检查到不能运行。
print(os.environ["PYTHONIOENCODING"])
os.environ["PYTHONIOENCODING"]
os.environ.get("PYTHONIOENCODING")
print(os.environ)
import requests #调用requests库
res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html')
#获取网页源代码,得到的res是response对象
print(res.status_code) #检查请求是否正确响应
html = res.text #把res的内容以字符串的形式返
unicodeHtml = html.decode("UTF-8")
print(unicodeHtml)
谢谢老师的指点,
我按照您说的方法试了,依然显示报错,html已经是字符串格式,无法再被decode('utf-8')解码。
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='GB18030')
sys.stdout.reconfigure(encoding='GB18030')
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
方式2:
sys.stdout.reconfigure(encoding=‘GB18030’)
另外,为了调试确认编码的确已改,最好在之前和之后都加上:
print(“sys.stdout.encoding=%s” % sys.stdout.encoding)
以及:
其他查看一些信息
import sys, locale, os
print(sys.stdout.encoding)
print(sys.stdout.isatty())
print(locale.getpreferredencoding())
print(sys.getfilesystemencoding())
print(os.environ["PYTHONIOENCODING"])
-》这样便于调试清楚 更改编码 之前 和 之后,各个变量和编码是否有变化 具体是什么值 方便找出问题所在。
import sys, locale, os
print(sys.stdout.encoding)
print(sys.stdout.isatty())
print(locale.getpreferredencoding())
print(sys.getfilesystemencoding())
print(os.environ["PYTHONIOENCODING"])
另外您说的这几个查看信息的输出各是什么意思啊,刚入门真心求教。
我将最下面一个复制到VScode显示报错
又去看了看,目前有点怀疑: 你windows的cmd,可能本身是unicode了,所以不会报错。 而你VSCode时,内置的终端 默认是GBK,而其中某些字符不支持(因为本身GBK支持的字符就不是足够多,只是GB18030的子集) 所以建议: 把终端编码改为 BG18030 去看看效果,或许就可以了。 把终端输出编码改为GB18030: 方式1:方式2:sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
另外,为了调试确认编码的确已改,最好在之前和之后都加上:sys.stdout.reconfigure(encoding=‘GB18030’)
以及: 其他查看一些信息print(“sys.stdout.encoding=%s” % sys.stdout.encoding)
-》这样便于调试清楚 更改编码 之前 和 之后,各个变量和编码是否有变化 具体是什么值 方便找出问题所在。import sys, locale, os print(sys.stdout.encoding) print(sys.stdout.isatty()) print(locale.getpreferredencoding()) print(sys.getfilesystemencoding()) print(os.environ["PYTHONIOENCODING"])
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
sys.stdout.reconfigure(encoding=‘GB18030’)
print(“sys.stdout.encoding=%s” % sys.stdout.encoding)
import sys, locale, os
print(sys.stdout.encoding)
print(sys.stdout.isatty())
print(locale.getpreferredencoding())
print(sys.getfilesystemencoding())
print(os.environ["PYTHONIOENCODING"])
在程序第一行加句
#-*- coding:utf-8 _*-
这样试试。
上面这一串代码,在vscode运行编码错误,但是python自带的idle和pycharm运行正常呢?
unicodeHtml = html.decode("UTF-8")
print(unicodeHtml)
vscode的launch.json文件运行,中文显示乱码
#-*- coding:utf-8 _*-
这样试试。