Google 翻译 API 浏览器响应和 Android App\Postman - 阿拉伯字符
Google Translate API Response on Browser and Android App\Postman - Arabic Chracters
我正在使用 Google 中的 API url。
Browser URL Example
> URL Example 1 (URL.encoded): http://translate.googleapis.com/translate_a/single?client=gtx&sl=ar-AE&tl=en-US&dt=t&q=%D9%85%D8%B1%D8%AD%D8%A8%D8%A7
> URL Example 2: http://translate.googleapis.com/translate_a/single?client=gtx&sl=ar-AE&tl=en-US&dt=t&q=مرحبا
> Android okhttp Example: "http://translate.googleapis.com/translate_a/single?client=gtx&" +
"sl=" + sourceLanguage +
"&tl=" + targetLanguage + "&dt=t&" +
"q=" + URLEncoder.encode(text, "UTF-8");
将阿拉伯语转换为英语,如果我在 chrome 浏览器上执行以下 url,它会给我正确的结果。但是当我使用 okHttp 执行以下 url 时,我得到了错误的响应。
Response (Chrome) Correct Results: [[["Hi","مرحبا",null,null,1]],null,"ar"]
Response okhttp (android) Wrong Results: [[["I ... ط ± طط¨ط§","ظ…ط±طط¨ط§",null,null,3]],null,"ar"]
OkHttp 代码
OkHttpClient client = new OkHttpClient();
Log.e("Translate TEXT", URL);
Call call = client.newCall(new Request.Builder().addHeader("Content-Type","application/json; charset=UTF-8").url(URL).get().build());
Response response = call.execute();
if (response.code() == 200 || response.code() == 201) {
String resp = response.body().string();
JSONArray jsonArray = new JSONArray(resp);
translatedText = jsonArray.getJSONArray(0).getJSONArray(0).getString(0);
Log.e("RESPONSE 1", translatedText );
}
我已经尝试过 URLEncoder、UriEncoder 和 Whosebug 上可用的其他一些解决方案。
URL = "http://translate.googleapis.com/translate_a/single?client=gtx&" +
"sl=" + sourceLanguage +
"&tl=" + targetLanguage + "&dt=t&ie=UTF-8&oe=UTF-8&" +
"q=" + URLEncoder.encode(text, "UTF-8");
我通过添加 2 个 "ie=UTF-8&oe=UTF-8" 参数解决了这个问题。
感谢以下回答 link
https://forum.golangbridge.org/t/google-translate-api-issue-solved/5059/2
我正在使用 Google 中的 API url。
Browser URL Example
> URL Example 1 (URL.encoded): http://translate.googleapis.com/translate_a/single?client=gtx&sl=ar-AE&tl=en-US&dt=t&q=%D9%85%D8%B1%D8%AD%D8%A8%D8%A7
> URL Example 2: http://translate.googleapis.com/translate_a/single?client=gtx&sl=ar-AE&tl=en-US&dt=t&q=مرحبا
> Android okhttp Example: "http://translate.googleapis.com/translate_a/single?client=gtx&" +
"sl=" + sourceLanguage +
"&tl=" + targetLanguage + "&dt=t&" +
"q=" + URLEncoder.encode(text, "UTF-8");
将阿拉伯语转换为英语,如果我在 chrome 浏览器上执行以下 url,它会给我正确的结果。但是当我使用 okHttp 执行以下 url 时,我得到了错误的响应。
Response (Chrome) Correct Results: [[["Hi","مرحبا",null,null,1]],null,"ar"]
Response okhttp (android) Wrong Results: [[["I ... ط ± طط¨ط§","ظ…ط±طط¨ط§",null,null,3]],null,"ar"]
OkHttp 代码
OkHttpClient client = new OkHttpClient();
Log.e("Translate TEXT", URL);
Call call = client.newCall(new Request.Builder().addHeader("Content-Type","application/json; charset=UTF-8").url(URL).get().build());
Response response = call.execute();
if (response.code() == 200 || response.code() == 201) {
String resp = response.body().string();
JSONArray jsonArray = new JSONArray(resp);
translatedText = jsonArray.getJSONArray(0).getJSONArray(0).getString(0);
Log.e("RESPONSE 1", translatedText );
}
我已经尝试过 URLEncoder、UriEncoder 和 Whosebug 上可用的其他一些解决方案。
URL = "http://translate.googleapis.com/translate_a/single?client=gtx&" +
"sl=" + sourceLanguage +
"&tl=" + targetLanguage + "&dt=t&ie=UTF-8&oe=UTF-8&" +
"q=" + URLEncoder.encode(text, "UTF-8");
我通过添加 2 个 "ie=UTF-8&oe=UTF-8" 参数解决了这个问题。 感谢以下回答 link https://forum.golangbridge.org/t/google-translate-api-issue-solved/5059/2