无法在url中连接String,其中String包含unicodes并从EditText获取?

时间:2017-04-26 04:05:03

标签: android url unicode android-volley unicode-string

我正在使用json的排球库我已经完成了

           String   header=sirsak.getText().toString().replace(" ","");
            Log.d("header::",header); //here sirsak is edit text***strong text***

从编辑文本中获取字符串..

并尝试与url连接

      String posturl="http://54.193.70.29:8080/ghosanapatra/message/addMessageA?message=message&cId=1&heading="+header+"&eId=1&pId=268&wId=1&name=name&memberFbId=123&phone=9860327645";

     StringRequest postrequest=new StringRequest(Request.Method.GET,posturl, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                   pd=new ProgressDialog(GiveSujab.this);
                    pd.setMessage("loading.");
                    pd.setCancelable(false);
                    pd.show();
                    try {
                        JSONObject saveobj = new JSONObject(response);
                        String savestatus = saveobj.getString("save");
                        if (savestatus.equals("sucess")) {
                            Toast.makeText(GiveSujab.this, "", Toast.LENGTH_SHORT).show();
                            Intent intent=new Intent(GiveSujab.this,MainActivity.class);
                            startActivity(intent);
                        }
                    }catch (Exception e){
                        Toast.makeText(GiveSujab.this, "error", Toast.LENGTH_SHORT).show();
                    }
                    pd.dismiss();

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

                }
     });

            requestqueue.add(postrequest);

当我在EditText中键入英文文本但当我输入尼泊尔语言时不能正常工作,例如&#34;नेपाली&#34; 它表现得像  http://54.193.70.29:8080/ghosanapatra/message/addMessageA?message=message&cId=1&heading=नेपालीको&amp; eId = 1&amp; pId = 268&amp; wId = 1&amp; name = name&amp; memberFbId = 123&amp; phone = 9860327645

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

这是一个编码问题,请尝试通过此错误 在做这行之前

String   header=sirsak.getText().toString().replace(" ","");

这样做

System.out.println(sirsak); //watch what it outputs here

然后

System.out.println(new String(sirsak.getBytes("UTF-8"))); //watch what it outputs

或者这样做

System.out.println(new String(sirsak.getBytes("ISO-8859-1")));

其中一个应该给你正确的格式。假设

sirsak.getBytes("UTF-8")

为您提供正确的格式,只需将其重新分配给新字符串,如下所示

String newSirsak = sirsak.getBytes("UTF-8");

并在您的代码中使用它。希望你觉得这很有用。

由于

答案 1 :(得分:0)

String uri = Uri.parse(""http://54.193.70.29:8080/ghosanapatra/message/addMessageA")
                .buildUpon()
                .appendQueryParameter("key", "val")
 .appendQueryParameter("key", "val")
 .appendQueryParameter("key", "val")
                .build().toString();

答案 2 :(得分:0)

你需要把.trim()只用不替换。

          String   header=sirsak.getText().toString().trim();

答案 3 :(得分:0)

最后我得到了代码

             String header = sirsak.getText().toString();
                String encode = URLEncoder.encode(header,"UTF-8");

非常简单