Home > Java > javaTutorial > How to Guarantee UTF-8 Encoding Throughout a Java Web Application?

How to Guarantee UTF-8 Encoding Throughout a Java Web Application?

Barbara Streisand
Release: 2024-12-21 15:51:10
Original
955 people have browsed it

How to Guarantee UTF-8 Encoding Throughout a Java Web Application?

How to Ensure UTF-8 Encoding in Java Web Applications

To enable UTF-8 encoding in your Java webapp, follow these steps:

1. Configure Tomcat's server.xml

Add the following line to enable UTF-8 encoding for URL (GET request) parameters:

<Connector port="8080" ... URIEncoding="UTF-8" ... />
Copy after login

2. Implement a Character Set Filter

Define a filter to force the webapp to handle all requests and responses as UTF-8 encoded:

import javax.servlet.*;

public class CharsetFilter implements Filter {

    private String encoding = "UTF-8";

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain next) throws ServletException, IOException {
        request.setCharacterEncoding(encoding);
        response.setContentType("text/html; charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        next.doFilter(request, response);
    }
}
Copy after login

3. Add the Filter to web.xml

Register the filter in the deployment descriptor:

<filter>
    <filter-name>CharsetFilter</filter-name>
    <filter-class>fi.foo.filters.CharsetFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CharsetFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Copy after login

4. Set JSP Page Encoding

Specify the page encoding in web.xml:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>
Copy after login

5. Use HTML-Meta Tags

Indicate the encoding used by HTML pages:

<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
Copy after login

6. Configure JDBC Connection

Specify UTF-8 encoding for the database connection:

<Resource ... url="jdbc:mysql://localhost:3306/ID_development?useEncoding=true&amp;amp;characterEncoding=UTF-8"
... />
Copy after login

7. Create Tables with UTF-8 Collation

Ensure that all database tables have UTF-8 collation:

CREATE TABLE  `Users` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `name` varchar(30) collate utf8_swedish_ci default NULL
    PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=DYNAMIC;
Copy after login

8. Check MySQL Server Configuration

Verify that the server is configured to use UTF-8 as the default character set:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8
Copy after login

Note:

While Cyrillic characters like "ж" can be handled through GET requests with UTF-8 encoding, characters like "ä" may be encoded in Latin1 (ISO-8859-1), causing inconsistencies.

The above is the detailed content of How to Guarantee UTF-8 Encoding Throughout a Java Web Application?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template