title: URL Encode and Decode Special character in Java
body: <p>In Java, I need to use HTTP Post to send request to server, but if in the parameter of the URL contains some special character it throws below Exception</p>
  
  <blockquote>
    <p>java.lang.IllegalArgumentException:
    URLDecoder: Illegal hex characters in
    escape (%) pattern - For input string:
    "&amp;'"</p>
  </blockquote>
  
  <p>The code to send data</p>
  
  <pre><code>DefaultHttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(URL); 
  
     String sessionId = RequestUtil.getRequest().getSession().getId();
     String data = arg.getData().toString();
  
     List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();   
     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);
  </code></pre>
  
  <p>And at the server side, i use the below code to read information </p>
  
  <pre><code> String data = request.getParameter(param1);
     if (data != null) {
      actionArg = new ChannelArg(URLDecoder.decode(data, "UTF-8"));
     }
  </code></pre>
  
  <p>The code works correctly but if i input some special character like [aああ#$%&amp;'(&lt;>?/.,あああああ], it will throw exception. I wonder if someone could help me some hint to be able to encode and decode special characters?</p>
  
  <p>Thank you very much in advance.</p>