我正尝试使用here中所述的Google翻译API中的Google翻译方法,但是由于某种原因,我得到的翻译用下划线代替了非拉丁字符。
例如,在命令行上使用curl:
sortRelatives
与translate.google.com的英语到德语结果进行比较:
$ curl -X POST 'https://translation.googleapis.com/language/translate/v2/?source=en&target=de&q=Practicing+diligently+each+day+means+inevitable+improvement.&key=MY_API_KEY'
{
"data": {
"translations": [
{
"translatedText": "T_glich flei_ig zu _ben, bedeutet unausweichliche Verbesserung."
}
]
}
}
当目标是日语(不包含拉丁字符)这样的语言时,这尤其糟糕:
Täglich fleißig zu üben, bedeutet unausweichliche Verbesserung.
也许这是试用帐户的限制?但是,我在此文档中没有看到任何东西可以表明这一点。
答案 0 :(得分:0)
我相信这是一个字符串编码问题。
我假设您的HTTP请求正文是使用application/x-www-form-urlencoded
-发送的,它不支持0x7F
(128)以上的字符作为文字文本,请参见此处:{{3 }}
我建议:
POST
,带有显式的Content-Type: application/json
标头,其中包含charset=utf-8
字段。 (x-www-form-urlencoded
不支持charset
字段)。fetch
在JavaScript中创建请求,并使用Chrome的开发人员工具的“网络”标签的“复制为cURL(Bash)”命令来获取要使用的终端命令。 答案 1 :(得分:0)
有点令人尴尬的是,这实际上只是tmux
的问题,我正在使用的终端多路复用器读取我对Translation API的每个调用的输出,包括curl
和打印输出我正在编写的代码的输出。
根据this Ask Ubuntu answer to someone else's tmux
question,可以通过明确告诉tmux
使用UTF-8支持(即tmux -u
)启动来解决此问题。
感谢Dai和Daniel指出潜在的终端问题。
答案 2 :(得分:0)
我刚刚尝试了以下请求,但效果很好:
curl -X POST "https://translation.googleapis.com/language/translate/v2?key=MY_API_KEY" \
-H "Content-Type: application/json" \
--data "{
'q': 'Practicing diligently each day means inevitable improvement.',
'source': 'en',
'target': 'de'
}"
提供此输出:
{
"data": {
"translations": [
{
"translatedText": "Täglich fleißig zu üben, bedeutet unausweichliche Verbesserung."
}
]
}
}
对于日语输出:
{
"data": {
"translations": [
{
"translatedText": "毎日熱心に練習することは避けられない改善を意味します。"
}
]
}
}
希望有帮助