Android 应用程序中非英语字符的 Json 值错误

Json value error for Non-English character in Android App

提问人:Papel 提问时间:12/8/2020 最后编辑:Papel 更新时间:12/8/2020 访问量:217

问:

我想从我的 JSON 文件中在我的应用程序中显示非英语字符,例如孟加拉语或阿拉伯语,但它在我的应用程序中显示垃圾文本,但英语文本效果很好,那么如何在 Android Studio 中解决这个问题?提前致谢!

这是我的代码,但是当我运行我的应用程序时,一切正常,但没有显示我自己的文本,它不是英语文本,其他母语文本。

private void loadData() {

    StringRequest stringRequest = new StringRequest(Request.Method.GET, jsonURL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            

            try {
                JSONObject jsonObject = new JSONObject(response);
                JSONArray jsonArray = jsonObject.getJSONArray("leader");

                for (int i=0; i<jsonArray.length(); i++){

                    JSONObject recieveData = jsonArray.getJSONObject(i);

                    //.getBytes("ISO-8859-1"), "UTF-8")

                    LeaderModel items = new LeaderModel(
                            recieveData.getString("url"),
                            recieveData.getString("name"),
                            recieveData.getString("title"),             
                            recieveData.getString("description")
                    );

                    leaderListItems.add(items);
                }

                leaderAdapter = new LeaderAdapter(leaderListItems, getApplicationContext());
                recyclerView.setAdapter(leaderAdapter);


            }catch (JSONException e){
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

            Toast.makeText(LeaderMainPage.this, "Server error!", Toast.LENGTH_LONG).show();

        }
    });

    RequestQueue queue = Volley.newRequestQueue(this);
    queue.add(stringRequest);


}
安卓 JSON UTF-8

评论

0赞 JosefZ 12/8/2020
编辑您的问题,以提供一个最小的可重复示例

答:

0赞 Papel 12/8/2020 #1

我刚刚在我的公共 void onResponse(){} 方法中使用此代码行解决了这个问题,并且效果很好。

      if (response != null){
            try {
                response=new String(response.getBytes("ISO-8859-1"), "UTF-8");

            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }