我试图使用谷歌的翻译方法,从它的翻译API作为文档的这里,但出于某种原因,我得到的翻译用下划线代替非拉丁字符。
例如,命令行上有curl:
$ 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."
}
]
}
}与translate.google.com从英语到德语的结果相比:
Täglich fleißig zu üben, bedeutet unausweichliche Verbesserung.尤其是当目标语言是像日语这样不包含拉丁字母的语言时:
$ curl -X POST 'https://translation.googleapis.com/language/translate/v2/?source=en&target=ja&q=Practicing+diligently+each+day+means+inevitable+improvement.&key=MY_API_KEY'
{
"data": {
"translations": [
{
"translatedText": "______________________________________________________"
}
]
}
}也许这是试算表限制?然而,我在这个文档中看到的任何东西都不能说明这一点。
发布于 2019-03-19 20:13:41
有些尴尬的是,这实际上只是tmux的一个问题,它是我使用的终端复用器,用于读取我对Translation的每一个调用的输出,无论是用curl还是我正在编写的代码的打印输出。
根据问题,通过显式地告诉tmux启动UTF-8支持,即tmux -u,这是可以修复的。
感谢戴和丹尼尔指出一个潜在的终端问题。
发布于 2019-03-19 20:11:24
我认为这是一个字符串编码问题。
我假设您的HTTP请求主体是使用application/x-www-form-urlencoded -发送的,它不支持 (128)上面的字符作为文字文本,参见:应用程序/x-www-表单-urlencoded和charset="utf-8"?
我建议:
POST头的charset=utf-8字段集。(x-www-form-urlencoded不支持charset字段)。fetch在fetch中创建请求,并使用Chrome的Network的“复制为cURL (Bash)”命令来获取终端命令。发布于 2019-03-19 21:56:33
我刚刚尝试了以下请求,效果很好:
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": "毎日熱心に練習することは避けられない改善を意味します。"
}
]
}
}希望它能帮上忙
https://stackoverflow.com/questions/55249051
复制相似问题