Специальный символ кодирования и декодирования URL в Java

В Java мне нужно использовать HTTP Post для отправки запроса на сервер, URLDecoder: недопустимые шестнадцатеричные символы в escape (%) шаблон - Для входной строки: "& '"

Код для отправки данных

DefaultHttpClient httpclient = new DefaultHttpClient(); 
   HttpPost httpPost = new HttpPost(URL); 

   String sessionId = RequestUtil.getRequest().getSession().getId();
   String data = arg.getData().toString();

   List<NameValuePair> params = new ArrayList<NameValuePair>();   
   params.add(new BasicNameValuePair(param1, data));
   params.add(new BasicNameValuePair(param2, sessionId));
         httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));           

   HttpResponse response = (HttpResponse) httpclient.execute(httpPost);

А на стороне сервера я использую приведенный ниже код для чтения информации

 String data = request.getParameter(param1);
   if (data != null) {
    actionArg = new ChannelArg(URLDecoder.decode(data, "UTF-8"));
   }

Код работает правильно, но если я ввожу какой-то специальный символ, например [a あ あ # $% & '(<>? /., あ あ あ あ あ], это вызовет исключение. Интересно, может ли кто-нибудь мне помочь подсказкой, как кодировать и декодировать специальные символы?

Заранее большое спасибо.

16
задан Phu Nguyen 30 January 2011 в 05:28
поделиться