我正在尝试实现 this post 中的代码。我成功地对某些语言做到了这一点,但对于希腊语,我得到了一些奇怪的结果,如下所示:ΑÏ?χÎØÏ?Îος
这是我使用的java代码:
public static String translate(String langFrom, String langTo, String text) {
StringBuilder response = null;
System.out.println("Translate: " + text);
try {
String urlStr = Main.GOOGLE_SCRIPTS_URL +
"?q=" + URLEncoder.encode(text, "UTF-8") +
"&target=" + langTo +
"&source=" + langFrom;
//System.out.println(urlStr);
URL url = new URL(urlStr);
response = new StringBuilder();
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestProperty("User-Agent", "Mozilla/5.0");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
}
catch (IOException e)
{
e.printStackTrace();
}
return response.toString();
}
这是我在 script.google.com 网站中使用的脚本:
var mock = {
parameter:{
q:'hello',
source:'en',
target:'fr'
}
};
function doGet(e) {
e = e || mock;
var sourceText = ''
if (e.parameter.q){
sourceText = e.parameter.q;
}
var sourceLang = '';
if (e.parameter.source){
sourceLang = e.parameter.source;
}
var targetLang = 'en';
if (e.parameter.target){
targetLang = e.parameter.target;
}
var translatedText = LanguageApp.translate(sourceText, sourceLang, targetLang, {contentType: 'html'});
return ContentService.createTextOutput(translatedText).setMimeType(ContentService.MimeType.JSON);
}
有什么想法可以解决这个问题吗?谢谢。
最佳答案
我设法使用以下代码解决了这个问题:
public static String translate(String langFrom, String langTo, String text)
{
String translatedText=null;
try {
String urlStr = Main.GOOGLE_SCRIPTS_URL +
"?q=" + URLEncoder.encode(text, "UTF-8") +
"&target=" + langTo +
"&source=" + langFrom;
//System.out.println(urlStr);
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream(),"UTF-8"));
String inputLine;
while ((inputLine = br.readLine()) != null) {
translatedText=inputLine;
}
br.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return translatedText;
}
首先在 Eclipse 控制台上我得到这样的结果“?????????”但后来我转到“运行”->“运行配置”->“通用”,并将编码更改为 UTF-8。 现在一切都很好!
关于java - 使用谷歌脚本服务翻译文本返回编码文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61739564/