【发布时间】:2020-12-03 21:54:32
【问题描述】:
我使用 DeepL API:https://www.deepl.com/docs-api/translating-text/
我使用 python 和 request 库与它进行交互。
import requests
import ast
r = requests.post(url='https://api.deepl.com/v2/translate',
data = {
'target_lang' : 'FR',
'auth_key' : 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'text': ''Honey Was ist denn los hier?''})
print(ast.literal_eval(r.text)['translations'][0]['text'])
输出:
'Chérie, que se passe-t-il ici ?'
如你所见,我得到的是“Chérie”而不是“Chérie”
这很正常,因为 DeepL API : "仅支持 UTF8 编码的纯文本。"
但我不知道要获得正确的文本(此处为“Chérie”),我在输入中尝试了一些工具,例如“.encode('utf-8')”,但它不起作用。
你有想法吗?提前谢谢你:)
【问题讨论】:
-
您的终端可能认为输出是 Latin-1(或 CP1252),而实际上是 UTF-8。您可以使用
print('Ch\u00E9rie')进行测试。 -
但这也可能是因为您使用了一种有趣的方法来编码/解码 JSON。为什么不
requests.post(..., json={'target_lang': ...}),然后r.json()反序列化响应? -
哦,它有效!谢谢 :) 我用过: import requests import ast r = requests.post(url='api.deepl.com/v2/translate', data = { 'target_lang' : 'FR', 'auth_key' : 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'', 'text': '亲爱的是 denn los hier 吗?'}) r.json()['translations'][0]['text'] 我得到 >> 'Chérie, que se passe-t-il ici ?'
标签: python api utf-8 python-requests deepl