0

クリップボードの変更をリッスンし、API を使用して言語を識別し、その意味を取得するアプリを作成しています。問題は、一部の言語が疑問符として表示されることです。文字エンコーディングに問題があると思います。修正方法がわかりません。

コード:

 //to get language
 static void getLanguage (String s) {
    URL get = null;
    String data = null;
    try {
        get = new URL("https://translate.yandex.net/api/v1.5/tr.json/detect?key=<api_key>&text=" + s);
        Log.d(app_name,get.toString());
        InputStreamReader i_read = new InputStreamReader(get.openConnection().getInputStream());
        data = "";
        int char_read;
        while ((char_read = i_read.read()) != -1) {
            data += (char) char_read;
        }
        int start_index = data.lastIndexOf(":") + 2;
        int end_index = data.lastIndexOf("\"");
        lang = data.substring(start_index, end_index);
        if (lang.equals("")) lang = "en";

    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        Log.d(app_name, data);
    }
}

//to get meaning
static public String getDef(String word_string,boolean reTranslate) {
    Log.d (app_name,"got word to define: "+word_string);
    if( !testInet("google.com"))
    {
     Log.d (app_name,"no internet Found");

    }

    String dict_data = "";
    try {
        if (auto_detect_language && !reTranslate)getLanguage(word_string);
        URL get = new URL("https://glosbe.com/gapi/translate?from="+lang+"&dest="+lang_to_translate+"&format=json&phrase=" + word_string+"&tm=true");
        Log.d(app_name,get.toString());
        URLConnection connect = get.openConnection();

        HttpURLConnection   con = (HttpURLConnection) connect;

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

        String current_line;

        while ((current_line = in.readLine()) != null) {

            dict_data += current_line;
        }
        Log.d (app_name,dict_data);
        con.disconnect();
        in.close();

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

    }

    return dict_data;

}

返されたデータは、logcat が適切に表示されますが、単語は単なる疑問符であると述べています。

ログ:

02-19 09:28:48.293 31626-1764/com.anjay.dictionary D/Dictionary: got word to define: शब्दकोश
02-19 09:28:48.523 31626-1763/com.anjay.dictionary D/Dictionary:https://translate.yandex.net/api/v1.5/tr.json/detect?key=<api key>&text=शब्दकोश
02-19 09:28:50.363 31626-1763/com.anjay.dictionary D/Dictionary: {"code":200,"lang":""}
02-19 09:21:13.983 21912-25637/com.anjay.dictionary D/Dictionary: https://glosbe.com/gapi/translate?from=en&dest=en&format=json&phrase=शब्दकोश&amp;tm=true
02-19 09:21:15.683 21912-25648/com.anjay.dictionary D/Dictionary: {"result":"ok","phrase":"??????","examples":[],"from":"en","dest":"en","authors":{}}
4

1 に答える 1

0

current_line は aStringであるため、ヒンディー文字を認識できません。

responseが正しいことがわかるからです。ここに画像の説明を入力

以下を使用して、response

 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
于 2016-02-19T06:00:16.727 に答える