【问题标题】:Chinese character encoding in search URL搜索 URL 中的汉字编码
【发布时间】:2018-01-10 11:11:04
【问题描述】:

我正在使用改造在我的 Android 应用程序中构建弹性搜索的搜索请求。以下是我的代码:

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    ElasticSearchAPI searchAPI = retrofit.create(ElasticSearchAPI.class);
    HashMap<String, String> headerMap = new HashMap<>();
    headerMap.put("Authorization", Credentials.basic("user", elasticSearchPassword));

    String searchString = "title:"+ title;
    Call<HitsObject> call = searchAPI.search(headerMap, "AND", searchString);

从elasticsearch响应中我发现URL变成了:url=http://35.xxx.xxx.48//elasticsearch/hashtags/hashtag/_search?default_operator=AND&amp;q=title:%E6%B5%B7%E5%BA%95%E6%8D%9E%E7%81%AB%E9%94%85

但是我这里传入的title是一个有效的中文字符串。我该如何解决这个问题?谢谢!

【问题讨论】:

  • 使用URLDecoder获取原始url。
  • 你能给出一些更具体的说明吗?对不起,我是新手..
  • 我已经发布了我的答案。

标签: java encoding character retrofit2


【解决方案1】:

假设您使用 utf-8 编码。

String encodedUrl = "http://35.xxx.xxx.48//elasticsearch/hashtags/hashtag/_search?default_operator=AND&q=title:%E6%B5%B7%E5%BA%95%E6%8D%9E%E7%81%AB%E9%94%85";
String originalUrl = URLDecoder.decode(encodedUrl, "utf-8");
System.out.println(originalUrl);

【讨论】:

    猜你喜欢
    • 2012-06-26
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2020-12-17
    • 2015-11-17
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多