1
컨트롤러에 키릴 기호를 보내려고합니다. 내가 AJAX를 통해 매개 변수를 전달하고 내 JSP의 상단에 ISO-8859-1봄 문자 인코딩
을받을 방법을 GET 오전시를 통해 컨트롤러에 보낼 때 : 나는 사용자 정의 필터를 만들려고 한
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
하지만 내가 구성 MessageConverters
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
//Other configuration
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
stringConverter.setSupportedMediaTypes(Arrays.asList(new MediaType("text", "plain", Charset.forName("UTF-8"))));
converters.add(stringConverter);
}
}
을 시도
@WebFilter(urlPatterns = "/*")
public class EncodingFilter implements Filter {
//INIT method
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest servletRequest = (HttpServletRequest) request;
HttpServletResponse servletResponse = (HttpServletResponse) response;
String requestEncoding = servletRequest.getCharacterEncoding();
if (requestEncoding == null) {
servletRequest.setCharacterEncoding(ENCODING);
}
String responseEncoding = servletResponse.getCharacterEncoding();
// if (responseEncoding == null) {
// servletResponse.setCharacterEncoding(ENCODING);
// }
servletResponse.setCharacterEncoding(ENCODING);
chain.doFilter(servletRequest, servletResponse);
}
//DESTROY method
항상 ISO-8859-1 응답으로 작업, 수신 인코딩을 doesnot
그리고 봄 CharacterEncodingFilter
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{ApplicationConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{WebConfig.class};
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
return new Filter[] { characterEncodingFilter};
}
}
하지만 도움이되지 않습니다, AJAX 요청
$(window).load(function(){
$("#firstUser").keyup(function(){
var value = $(this).val();
console.log(value);
var searchRequest = $.ajax({
type: "GET",
url: "calc/name",
encoding: "UTF-8",
data: {
'userName' : value
},
dataType: "text",
success: function(msg){
}
});
})
});
스프링에는 'CharacterEncodingFilter' 필터가 이미 올바르게 구성되어 있습니다. 나는 당신 자신의 것을 쓰는 대신에'AbstractAnnotationConfigDispatcherServletInitializer'를 사용할 것을 제안 할 것이다. 그러나 나는 당신이 아약스 요청을 보내는 방법에 오류가 있다고 의심됩니다. –
아약스 요청을 보낼 때 contentType : "charset = utf-8"을 설정했습니다. AbstractAnnotationConfigDispatcherServletInitializer를 사용해 보았습니다. 결과는 같습니다. – Ilya
대신 설명을 추가하고 코드를 추가하십시오. 나는'AbstractAnnotationConfigDispatcherServletInitializer' 사용을 말하지 않았지만 코드를 정리합니다. –