python - 如何修复在vsCode中运行python代码,爬取的数据是中文乱码,在python中直接idle不行
问题描述
我写了一段网络爬虫代码,用来爬取有道词典进行翻译。在vscode中运行时,输出是乱码。直接在python idle上运行时,输出正常,怎么办?
我尝试将编码模式设置为 utf-8、gb2312 或 gbk,但没有成功。
from urllib import request
from urllib import parse
import json
content = input("请输入你要查找的字:")
url = " http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
data = {}
data['i'] = content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
data = parse.urlencode(data).encode('utf-8')
header = {}
header['Referer'] = 'http://fanyi.youdao.com/?keyfrom=dict2.index'
header['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3650.400 QQBrowser/10.4.3341.400'
req = request.Request(url = url, headers = header)
response = request.urlopen(req, data = data)
result_str = response.read().decode('utf-8')
result_dict = json.loads(result_str)
print(result_dict)
print('翻译的结果是:%s' % result_dict['translateResult'][0][0]['tgt'])
如果我输入'love',我希望'love'的输出是'爱'。当我在python idle中运行上面的代码时,这是正常的。但是在vscode中运行,它是乱码。
解决方案
问题可能是终端的编码与 IDLE 中的不同,这导致了不同的结果。
如果您可以升级到 Python 3.7,那么这可能会修复它,因为在该版本中为终端编码使用更合理的默认值。
推荐阅读
- r - 多个语句的函数
- shutterstock - Shutterstock api 返回未找到
- angular - 我正在我的 Angular 7 项目中实现 winwheel,但没有显示任何内容,怎么了?
- java - HtmlUnit 阅读 youtube 聊天
- r - 优化 R 中的多维函数
- google-cloud-platform - Terraform 条件取决于是否已创建资源
- powershell - ISE 中的命令与 PowerShell 中的命令不同
- prometheus - 为什么我们需要 Prometheus 中的服务发现?
- lua - Lua:从大型库中加载一个函数
- sql - SQL DATEADD 不返回季度结束