【问题标题】:UTF-8 String encoding for web url网址的 UTF-8 字符串编码
【发布时间】:2013-10-17 04:09:07
【问题描述】:

为了从以前的字符串中创建一个好的字符串格式的 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();
        }

例如我得到了:

title : "T çé ü" desc : "" ==>

http://..?title=T+%C3%A7%C3%A9+%C3%BC&descr=&lat=...&long=..

正确的 url 应该是(来自 iOS 方法)==> http://..?title=T%20%C3%A7%C3%A9%20%C3%BC&descr=%20&lat=...&long=...

title : "HB s6/&" desc : "" ==> http://..?title=HB+s6&descr=&lat=..long=..

正确的 url 应该是(来自 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");

【问题讨论】:

  • iOS 对空格字符使用 %20 转义,Android URLEncode 使用 + espcape。两者都是为空字符转义的有效 url。使用 encodedStr.replaceAll("+", "%20") 使它们相同。
  • 谢谢,我解决了将所有“+”替换为“%20”
  • encodedStr.replaceAll("\\+", "%20") 更好。 “+”应该被转义。

标签: java android url encoding utf-8


【解决方案1】:

在 Android 中你也有非常好的工具:URL encoding in Android

String query = URLEncoder.encode("apples oranges", "utf-8");
String url = "https://stackoverflow.com/search?q=" + query;

【讨论】:

  • 你在开玩笑吗?!发帖前先看看我的方法!
猜你喜欢
  • 2014-06-09
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
相关资源
最近更新 更多