1
私はコントローラにキリル文字を送信しようとしています。 私はAJAXを経由してパラメータを渡すと、私は私のjspの上にISO-8859-1春の文字エンコーディング
を受け取るメソッドをGETだとき介してコントローラに送信する場合:私は、カスタムフィルタを作成しようとしました
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
それは私がのconfigure 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){
}
});
})
});
Springにはすでに 'CharacterEncodingFilter'が適切に設定されているというフィルタが用意されています。私は 'AbstractAnnotationConfigDispatcherServletInitializer'をあなた自身のものを書く代わりに使うことを提案します。しかし、私はあなたのajaxリクエストを送信する方法に間違いがあると思われます。 –
私はajaxリクエストを送信するときにcontentType: "charset = utf-8"を設定しました。 AbstractAnnotationConfigDispatcherServletInitializerを使用しようとすると、結果は同じです。 – Ilya
を記述する代わりに、コードを追加してください。私は 'AbstractAnnotationConfigDispatcherServletInitializer'を使って言うことはしませんでしたが、あなたのコードをクリーンアップします。 –