【问题标题】:Unable to concatenate String in url where String contains unicodes and get from EditText?无法在字符串包含 unicode 并从 EditText 获取的 url 中连接字符串?
【发布时间】:2017-04-26 04:05:03
【问题描述】:

我正在使用我已经完成的 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

我该如何解决这个问题?

【问题讨论】:

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


【解决方案1】:

这是一个编码问题,试试这个来解决这个错误 在做这行之前

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

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

谢谢

【讨论】:

  • getByte 不支持
  • sirsak 是我假设的字符串,因此它应该可以工作如果不是,那么代替 sirsak 对 sirsak.getText().toString().getBytes() 做同样的事情。然后它应该工作。 getBytes() 的文档 -> docs.oracle.com/javase/7/docs/api/java/lang/…
  • sirsak=(EditText)findViewById(R.id.header); 和 String header=sirsak.getText().toString().getBytes();也不工作
【解决方案2】:
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();

【讨论】:

  • 你能解释一下吗?
  • 很简单,只需在 volley 方法中传递这个 String uri。 appendQueryParameter("key", "val") 将键值添加为查询字符串。例如如果写 String uri = Uri.parse("htttp:/www.google.com") .buildUpon() .appendQueryParameter("name", "rajesh") .appendQueryParameter("id", "55") .build ().toString();那么您的网址将变为“google.com/name=rajesh&id=55
  • 当我在 url 中使用直接值然后它的工作 http://54.193.70.29:8080/ghosanapatra/message/addMessageA?message=message&cId=1&heading=नगरपालिका&eId=1&pId=268&wId=1&name=name&memberFb3 =9860327645
  • 它显示 E/Volley:[1581] BasicNetwork.performRequest:54.193.70.29:8080/ghosanapatra/message/… 错误的意外响应代码 500
  • 其内部服务器错误。你必须在内部检查。但建议你不要通过除英语以外的其他语言
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    终于拿到密码了

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

    很简单

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 2020-08-26
      • 2017-12-11
      • 2019-01-29
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      相关资源
      最近更新 更多