2017-04-16 291 views
-1

我试图实现Android可搜索,并且我想过滤查询,我遵循this linkthis和其他。但Android Studio中,我得到这个消息unhandled exception java.io.UnsupportedEncodingException,这是我的代码Android URLEncoder.encode未处理的异常java.io.UnsupportedEncodingException

import java.net.URLEncoder;` 
private void doSearch(String queryStr) { 
    // get a Cursor, prepare the ListAdapter 
    // and set it 
    //Log.e("Query",queryStr); 
    searchRestaurants(URLEncoder.encode(queryStr, "UTF-8"));} 
+0

这样做的目的是什么? – azizbekian

+0

当我在搜索栏中输入'我的应用程序停止工作。因为在我的服务器端设置,我不允许'字符和搜索结果为空 –

回答

0

你需要用你的URLEncoder.encode() - 方法在try-catch块:

try { 
    URLEncoder.encode(queryStr, "UTF-8"); 
} catch (UnsupportedEncodingException e) { 
    Log.e("Yourapp", "UnsupportedEncodingException"); 
} 

你得到这个的原因错误在于某些平台可能不支持UTF-8编码。 Android绝对会这样做,所以你永远不会收到这个异常,但你仍然需要处理它以使编译器感到开心。但是,您的代码不会执行任何操作,您需要将encode()操作的结果存储在一个变量中,例如, String myEncodedQuery = URLEncoder.encode(queryStr, "UTF-8");

+0

Wat?我从字面上把代码交给了一个银盘上的OP。我很高兴提供一个链接如何在各种操作系统上执行复制/粘贴操作。 – Miraduro

+0

我不知道try catch,在哪里写下一个代码,'URLEncoder.encode(queryStr,“UTF-8”); (); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constants.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); RestaurantsRetrofit request = retrofit.create(RestaurantsRetrofit.class); 调用调用= request.searchRestaurants(queryStr)' –

+0

如果您实际上没有询问您在问题中制定的问题,请更新您的问题。 – Miraduro

0
import java.net.URLEncoder; 
private void doSearch(String queryStr) { 
    // get a Cursor, prepare the ListAdapter 
    // and set it 
    //Log.e("Query",queryStr); 
    try { 
     final String encodedPath = URLEncoder.encode(queryStr, "UTF-8")); 
     searchRestaurants(encodedPath); 
    } catch (UnsupportedEncodingException ec) { 
     Log.d(TAG, ec.printStacktrace); 
    } 
}