2011-10-21 15 views
5

我遇到了需要調用Web服務的問題。我只需要生成一個UTF-8編碼的url字符串。由於參數可以包含空格,我使用下面的代碼編碼成UTF-8:Android中的UTF-8轉換?

public String encodeUTF(String str) { 

     try { 
      byte[] utf8Bytes = str.getBytes("UTF-8"); 

      String encodedStr = new String(utf8Bytes, "UTF-8"); 

      return encodedStr; 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 
     return str; 
    } 

不過還是我收到相同的值。因此,我在調用服務時收到非法參數異常。有任何想法嗎?

+0

「UTF-8編碼的URL,因爲它可能包含空格」?你確定這就是你想要做的? UTF-8空間與ASCII空間相同。你不想* URL編碼*它? – deceze

+0

@deceze:是的。那就是我想要做的人。 – Praveen

+0

@Praveen你是怎麼解決這個問題的? – frayab

回答

11

對於UTF編碼使用本 - >URLEncoder.encode(string, "UTF-8");

你也需要改變空間 - >string.replace(" ", "%20");

6

試試看:

URLEncoder.encode(str, "UTF-8"); 
+0

現在我沒有得到非法論證例外。但我得到了http響應異常:不好的請求。你有什麼主意嗎? – Praveen

+0

@Paresh Mayani:是的。 – Praveen

2

您可以使用此:

import java.net.URLEncoder; 

class{ 
    String TEXT; 

    TEXT= URLEncoder.encode(TEXT, "UTF-8"); 

}