我创建了一个Android应用程序,我正在使用Google Translate Rest服务。
我使用此网址发送请求以翻译源文本。
"https://www.googleapis.com/language/translate/v2?key=" + apiKey + "&target=en&q=" + text"
如您所见,未设置源语言以使服务能够检测 给定文本的语言。
当我用希伯来语写东西时,我得到的结果是问号。
例如,如果我输入“שלוםעולם”,需要用英文翻译成“hello world”, 我得到了结果“???? ????”。
我尝试过其他语言,如俄语或西班牙语。它适用于西班牙语,但是 用俄语,它就像希伯来语一样。
API是否有任何错误或我做错了什么?
更新
encoded = URLEncoder.encode(textToTranslate,"UTF-8");
url = new URL("https://www.googleapis.com/language/translate/v2?key=" + apiKey + "&target=en&q=" + encoded);
谢谢, Elior
答案 0 :(得分:1)
您需要在传递之前将文本编码为q参数。
例如字符串שלוםעולם:
String original = "שלום עולם";
String encoded = null;
try {
encoded = URLEncoder.encode(original, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
encoded
变量的值为%D7%A9%D7%9C%D7%95%D7%9D+%D7%A2%D7%95%D7%9C%D7%9D
,网址变为:
"https://www.googleapis.com/language/translate/v2?key=" + apiKey + "&target=en&q=%D7%A9%D7%9C%D7%95%D7%9D+%D7%A2%D7%95%D7%9C%D7%9D"