无法连接 url 中的字符串,其中字符串包含 unicode 并从 EditText 获取?

Unable to concatenate String in url where String contains unicodes and get from EditText?

我正在使用 volley 库 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 中输入英文文本时它有效,但当我输入尼泊尔语如“नेपाली”时它不起作用 它显示像 http://54.193.70.29:8080/ghosanapatra/message/addMessageA?message=message&cId=1&heading=नेपालीको&eId=1&pId=268&wId=1&name=name&memberFbId=123&phone=9860327645

我该如何解决这个问题?

这是一个编码问题,请尝试解决此错误 在执行此行之前

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");

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

谢谢

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();

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

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

终于拿到验证码了

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

很简单