1

为了从以前的字符串制作一个好的字符串格式的 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");
4

1 回答 1

-1

在 Android 中,您也有非常好的工具:Android 中的 URL 编码

String query = URLEncoder.encode("apples oranges", "utf-8");
String url = "https://stackoverflow.com/search?q=" + query;
于 2013-10-09T16:58:41.040 回答