java mysql utf8 character problem

1. For Database:

Open Glassfish Admin Console, navigate “JDBC Connection Pools > pool_name > Additional Properties”
Update URL parameter’s value as:


(Add "?useUnicode=true&characterEncoding=UTF-8" part)

2. For Server:

Open Glassfish Admin Console, navigate “Configurations > server-config > JVM Settings > JVM Options”
Add option "-Dfile.encoding=UTF8"

3. Add the following filter to web.xml:

	<filter-name>Set Character Encoding</filter-name>
	<filter-name>Set Character Encoding</filter-name>

filter.SetCharacterEncodingFilter class:

package filters;


import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

 * Example filter that sets the character encoding to be used in parsing the
 * incoming request, either unconditionally or only if the client did not
 * specify a character encoding.
public class SetCharacterEncodingFilter implements Filter {

    protected String encoding = null;
    protected FilterConfig filterConfig = null;
    protected boolean ignore = true;

     * Take this filter out of service.
    public void destroy() {
        this.encoding = null;
        this.filterConfig = null;

     * Select and set (if specified) the character encoding to be used to
     * interpret request parameters for this request.
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)
            throws IOException, ServletException {
// Conditionally select and set the character encoding to be used
        if (ignore || (request.getCharacterEncoding() == null)) {
            String encoding = selectEncoding(request);
            if (encoding != null) {
// Pass control on to the next filter
        chain.doFilter(request, response);

     * Place this filter into service.
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
        this.encoding = filterConfig.getInitParameter("encoding");
        String value = filterConfig.getInitParameter("ignore");
        if (value == null) {
            this.ignore = true;
        } else if (value.equalsIgnoreCase("true")) {
            this.ignore = true;
        } else if (value.equalsIgnoreCase("yes")) {
            this.ignore = true;
        } else {
            this.ignore = false;

     * Select an appropriate character encoding to be used, based on the
     * characteristics of the current request and/or filter initialization
     * parameters. If no character encoding should be set, return null.
    protected String selectEncoding(ServletRequest request) {
        return (this.encoding);

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s