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
To encode text for safe passage through the internets:
import java.net.*;
...
try {
encodedValue= URLEncoder.encode(rawValue, "UTF-8");
} catch (UnsupportedEncodingException uee) { }
And to decode:
try {
decodedValue = URLDecoder.decode(rawValue, "UTF-8");
} catch (UnsupportedEncodingException uee) { }
String data = request.getParameter(param1);
If this is the servlet API, the parameters have already been decoded. No further handling of percent-encoding is necessary.
I haven't used HttpClient, but ensure it is sending the encoding in the header:
Content-type: application/x-www-form-urlencoded; charset=UTF-8
Or, if you must, set the known encoding before any getParameter
calls:
request.setCharacterEncoding("UTF-8");
Sadly url encoder will not solve your problem. I had this problem and used a custom utility. I remember this I got from googling ;).
http://www.javapractices.com/topic/TopicAction.do?Id=96
try guava
use com.google.common.net.UrlEscapers
it works fine with chinese
like this:
Escaper escaper = UrlEscapers.urlFragmentEscaper();
String result = escaper.escape(yoururl);