Как исправить код Python, запускаемый в vsCode, данные для сканирования искажены на китайском языке, но не в режиме ожидания Python напрямую - PullRequest
0 голосов
/ 22 апреля 2019

Я написал фрагмент веб-сканера, который использовался для сканирования словаря youdao для перевода. При запуске в vscode вывод был искажен. При прямом запуске в режиме ожидания Python вывод был нормальным. Что мне делать?

Я пытался установить режим кодирования в 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, это нормально. Но запускается в vscode, он искажается.

1 Ответ

0 голосов
/ 23 апреля 2019

Возможно, проблема в том, что терминал имеет другую кодировку, чем в IDLE, и это приводит к другим результатам.

Если вы можете перейти на Python 3.7, это может исправить это, поскольку была проделана работа по использованию более разумных значений по умолчанию для кодировок терминала в этом выпуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...