Tiếng Việt trong Spring Framework

Tôi gặp vấn đề liên quan đến việc nhập dữ liệu từ form strong Spring. Mặc dù đã để charset là UTF-8 rồi nhưng khi nhận request, tôi print ra thì vẫn bị lỗi tiếng Việt.

Qua tìm hiểu thì tôi biết được cách khắc phục như sau, áp dụng với server là Apache Tomcat.

Bước 1: Sửa file server.xml

Mở file server.xml của Tomcat (trong project Server nếu bạn dùng Eclipse), thêm URIEncoding="utf-8" vào thẻ Connector, kiểu như sau:

<Connector URIEncoding="utf-8"  connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
Bước 2: Sửa file web.xml

Thêm vào file web.xml trong project của bạn đoạn sau:

<filter>
 <filter-name>encodingFilter</filter-name>
 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
 </init-param>
 <init-param>
   <param-name>forceEncoding</param-name>
   <param-value>true</param-value>
 </init-param>
</filter>

<filter-mapping>
 <filter-name>encodingFilter</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>

Cuối cùng restart lại Tomcat server để xem kết quả.

Lưu ý rằng bài viết này nói về việc nhập tiếng Việt chứ không phải hiển thị tiếng Việt, nếu bạn gặp vấn đề với hiển thị tiếng Việt trong file JSP hoặc HTML thì bạn thêm dòng sau vào thẻ head

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">