사용자를 생성하는 데모 웹 애플리케이션이 있습니다. 다른 언어 (예 : 프랑스어)로 데이터를 삽입하려고하면 문자가 올바르게 인코딩되지 않습니다.Spring MVC를 사용한 인코딩 문제
@SuppressWarnings("unchecked")
@RequestMapping(value = "/user/create.htm", params={"id"}, method = RequestMethod.GET)
public String edit(@RequestParam("id") Long id, ModelMap model) {
System.out.println("id is " + id);
User user = userService.get(id);
model.put("user", user);
return "user/create";
}
@RequestMapping(value = "/user/create.htm", method = RequestMethod.POST)
public String save(@ModelAttribute("user") User user, BindingResult result) {
System.out.println(user.getFirstName());
System.out.println(user.getLastName());
validator.validate(user, result);
if(result.hasErrors()) {
return "user/create";
}
userService.save(user);
return "redirect:list.htm";
}
내 web.xml 파일은 다음과 같습니다 : 컨트롤러의 코드는
...
<filter>
<filter-name>encoding-filter</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>encoding-filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
하고 페이지는 다음과 같습니다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
<form:form method="post" commandName="user">
...
<form:input path="firstName" cssErrorClass="form-error-field"/>
...
나는 그 첫 번째 이름에 일부 감자 문자를 입력 할 때 system.out.println
의 출력은 ????+?????
또는 이와 비슷한 값입니다.
다른 사람들이 CharacterEncodingFilter
을 사용하여이 문제를 해결하는 것을 보았지만 제대로 작동하지 않는 것 같습니다.
고마워요.
필터 값을 편집했습니다.
네가 맞다면, 나는 여러 가지 것들을 테스트하고 있었고 그것을 다시 편집하는 것을 잊어 버렸다. –