Google переводит v2 api, возвращая не символы UTF-8 - PullRequest
2 голосов
/ 05 сентября 2011

Я пытаюсь использовать API Google Translate v2 в своем проекте движка приложений.Однако для акцентированных символов его кодировка испорчена [в данном случае слово «учащийся», которое должно быть «étudiants» по-французски, становится «étudiants»].Вот мой код.

    URL url = new URL(
            "https://www.googleapis.com/language/translate/v2?key=" + KEY
                    + "&q=" + urlEncodedText + "&source=en&target="
                    + urlEncodedLang);
    try {
        InputStream googleStream = url.openStream();

        // make a new bufferred reader, by reading the page at the URL given
        // above
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                googleStream));

        // temp string that holds text line by line
        String line;

        // read the contents of the reader/the page by line, until there are
        // no lines left
        while ((line = reader.readLine()) != null) {
            // keep adding each line to totalText
            totalText = totalText + line + "\n";
        }
        // remember to always close the reader
        reader.close();

    } catch (Exception ex) {
        ex.printStackTrace();
    }

, набрав тот же URL в браузере (Chrome на Ubuntu), работает нормально и возвращает ответ JSON, содержащий символы с акцентом.

Чего мне здесь не хватает?Спасибо

Ответы [ 2 ]

1 голос
/ 05 сентября 2011

Чтобы убедиться, что он имеет кодировку UTF-8, вы должны использовать:

BufferedReader reader = new BufferedReader(new InputStreamReader(googleStream, "UTF-8"));

, в противном случае используется кодировка по умолчанию, вероятно, это ISO-8859-1.

0 голосов
/ 01 декабря 2011

Вы также можете попробовать Google Translate API v2 для Java , который сделает это за вас.

...