You have missed to add UTF-8
in encoding.
Use it
URLEncoder.encode(stringToBeEncoded, "UTF-8");
instead of
URLEncoder.encode();
In your jsp, use page charset to UTF-8.
<%@page contentType="text/html;charset=UTF-8"%>
In your servlet, you can use it
request.setCharacterEncoding("UTF8");
response.setCharacterEncoding("UTF8");
Resource Link:
How to get UTF-8 working in Java webapps?
UPDATE:
Use filter from this link:
http://tomcat.apache.org/tomcat-8.0-doc/config/filter.html
How to use UTF-8 everywhere?
Using UTF-8 as your character encoding for everything is a safe bet. This should work for pretty much every situation.
In order to completely switch to using UTF-8, you need to make the following changes:
Set URIEncoding="UTF-8" on your <Connector>
in server.xml.
References: HTTP Connector, AJP Connector.
Use a character encoding filter with the default encoding set
to UTF-8
Change all your JSPs to include charset name in their contentType.
For example, use <%@page contentType="text/html; charset=UTF-8" %>
for the usual JSP pages and <jsp:directive.page contentType="text/html; charset=UTF-8" />
for the pages in XML
syntax (aka JSP Documents).
Change all your servlets to set the content type for responses and
to include charset name in the content type to be UTF-8. Use
response.setContentType("text/html; charset=UTF-8")
or
response.setCharacterEncoding("UTF-8")
.
Change any content-generation libraries you use (Velocity,
Freemarker, etc.) to use UTF-8 and to specify UTF-8 in the content
type of the responses that they generate.
Disable any valves or filters that may read request parameters
before your character encoding filter or jsp page has a chance to
set the encoding to UTF-8. For more information see
http://www.mail-archive.com/users@tomcat.apache.org/msg21117.html.