无法连接 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");
很简单
我正在使用 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");
很简单