为了从以前的字符串制作一个好的字符串格式的 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çéü”描述:“”==>
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/&”描述:“”==>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");