为了从之前的String中创建一个好的String格式化url,我想知道如何在另一个字符串中编码一个字符串,但是用UTF-8编码?
我的编码方法是:
public static String getUrlScheme(Context ctx, String title,
String description, double latitude, double longitude) {
try {
String titleUtf8 = URLEncoder.encode(title, "utf-8");
String descriptionUtf8 = URLEncoder.encode(description, "utf-8");
String urlScheme = ctx.getResources().getString(
R.string.url_scheme_base)
+ "?title="
+ titleUtf8
+ "&descr="
+ descriptionUtf8
+ "&lat=" + latitude + "&long=" + longitude;
return urlScheme;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
例如我得到了:
标题:“Tçéü”desc:“”==>
http://..?title=T+%C3%A7%C3%A9+%C3%BC&descr=&lat=...&long=..
正确的网址应该是(来自iOS方法)==> http://..?title=T%20%C3%A7%C3%A9%20%C3%BC&descr=%20&lat=...&long=...
标题:“HB s6 /&” desc:“”==> http://..?title=HB+s6&descr=&lat=..long=..
正确的网址应该是(来自iOS方法)==> http://..?title=HB%20s6&descr=%20&lat=...&long=...
问题是在iOS中,使用这种方法:stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding我的朋友可以用UTF-8编码好的字符串。
请帮忙
修改
通过“%20”替换“+”解决:
String titleUtf8 = URLEncoder.encode(title, "utf-8").replaceAll("\\+", "%20");
String descriptionUtf8 = URLEncoder.encode(description, "utf-8").replaceAll("\\+", "%20");
答案 0 :(得分:-1)
在Android中,您还可以使用非常好的工具:URL encoding in Android
String query = URLEncoder.encode("apples oranges", "utf-8");
String url = "https://stackoverflow.com/search?q=" + query;