Перевод с английского на китайский с использованием сервиса Microsoft translate - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь перевести английский текст на китайский с помощью службы перевода Microsoft (Azure) и запрашивает библиотеку для Python.

Проблема в том, что я получаю неправильные символы при получении перевода.

Я проверил кодировку ответа, и это utf-8, так что это должно работать.

Я использую этот код для перевода:

url = 'https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en-US&to=zh-CN&textType=html"

headers = {
    'Ocp-Apim-Subscription-Key': secretKey,
    'Content-type': 'application/json',
    'X-ClientTraceId': str(uuid.uuid4())
}

body = [{
    'text': string
}]

response = requests.post(url, headers=headers, json=body)
print(response.encoding) # This prints utf-8
response = request.json()
print(response[0]['translations'][0]['text'] # prints garbage
return response

Что здесь может происходить?

1 Ответ

0 голосов
/ 13 ноября 2018

Получаемый вами "мусор" - китайский, но он по-прежнему кодируется как UTF-8, поэтому вы должны рассматривать его как необработанную строку байтов и декодировать ее.

С примером результата str,

str = b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x90\x97\xef\xbc\x9f'
print (str.decode('utf8'))

дает

你好吗?

, что произносится как "Ni hao ma?"а на китайском "как дела?"

...