Azure Microsoft Translator API能否翻译带有特殊字符的文本?

Azure Microsoft Translator API能否翻译带有特殊字符的文本?,azure,api,microsoft-cognitive,azure-cognitive-services,microsoft-translator,Azure,Api,Microsoft Cognitive,Azure Cognitive Services,Microsoft Translator,我正在尝试使用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

我正在尝试使用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"}]
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"}]
我收到了正确的译文:

[{"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": "Gramatyka"}]
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”应翻译为“plant”

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

[{"Text": "Wörterbuch"}]
也会导致400000个错误


有人找到了解决方法吗?

您是否尝试检查语言检测分数,以了解它是否将其视为波兰语。您可以尝试不使用“From”属性。确保您放置了所有标题。
卷曲-X柱“https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=zh Hans“-H”Ocp Apim订阅密钥:“-H”内容类型:application/json;charset=UTF-8“-d”[{'Text':'Hello,你叫什么名字?}]”

这能回答你的问题吗?注意,dup谈到WordPress,但问题几乎肯定是相同的,您需要将
ContentType
头设置为
application/json;charset=utf-8
。我之前尝试过它,但它不起作用,但在您使用它之后,我意识到所需的标题不是
ContentType
,而是
Content-Type
。如果没有dash,它将无法工作,令人惊讶的是,它也是区分大小写的。谢谢问题是请求中缺少
内容类型
头。因此Azure需要正确处理的所有特殊字符都是
内容类型:application/json标题。