Microsoft Translator API 可以翻译带有特殊字符的文本吗?

问题描述

我正在尝试使用 Microsoft Translator API 将文本从波兰语翻译成任何其他语言。在波兰语中,有几个特殊字符,如“ą”、“ś”、“ż”等。当我发送没有特殊字符的 HTTP 请求时:

POST /translate?api-version=3.0&from=pl&to=en HTTP/1.1
Ocp-Apim-Subscription-Key: ********
Ocp-Apim-Subscription-Region: ******
Content-Length: 21
Host: api.cognitive.microsofttranslator.com
Connection: close
User-Agent: Apache-HttpClient/4.5.10 (Java/15.0.2)
Accept-Encoding: gzip,deflate

[{"Text": "Gramatyka"}]

我收到了正确的翻译:

[{"translations":[{"text":"grammar","to":"en"}]}]

但是,波兰语单词或句子很可能包含特殊字符:

POST /translate?api-version=3.0&from=pl&to=en HTTP/1.1
Ocp-Apim-Subscription-Key: ********
Ocp-Apim-Subscription-Region: ********
Content-Length: 21
Host: api.cognitive.microsofttranslator.com
Connection: close
User-Agent: Apache-HttpClient/4.5.10 (Java/15.0.2)
Accept-Encoding: gzip,deflate

[{"Text": "Roślina"}]

此请求导致错误代码 400000:

{"error":{"code":400000,"message":"One of the request inputs is not valid."}}

如果我将特殊字符更改为标准字符(例如将“ś”更改为“s”),则 API 不会提供正确的翻译。例如:

[{"Text": "Roslina"}]

结果:

[{"translations":[{"text":"Roslina","to":"en"}]}]

而“roślina”应翻译为“植物”。

这个问题也适用于其他语言。例如德语:

[{"Text": "Wörterbuch"}]

也会导致 400000 错误

有没有人找到解决方法

解决方法

您是否尝试检查语言检测分数,以了解它是否将其视为波兰语。您可以在没有“From”属性的情况下尝试吗?确保你把所有的标题。 curl -X POST "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=zh-Hans" -H "Ocp-Apim-Subscription-Key:" -H "Content-Type: application /json; charset=UTF-8" -d "[{'Text':'你好,你叫什么名字?'}]"