实际上这并不是ajax出现的问题,而是加上@responseBody出现的问题。
不要随便将锅甩给ajax哦~
这是因为什么呢?
responsebody默认response返回的格式是ISO-8859的编码,也就是欧洲编码不支持中文。
一般在ssm框架中,response.set…一下就行,但是在springboot中并不好用,而且网上还有其他的解决方案,但是有的是每次都要在注解上加条件,或者是因为配置导致了shiro或者其他的拦截报错,而且在springboot2.0之后出现新的配置WebMvcConfigurer Adapter已经被淘汰了,如果还像之前配置会出错的,2.0之后使用 WebMvcConfigurer或其子类等来进行配置。
注:第二个方法才是哦~
@Configuration
public class WebConfig implements WebMvcConfigurer {
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/", "classpath:/resources/",
"classpath:/static/", "classpath:/public/" };
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
}
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
// 解决controller返回字符串中文乱码问题
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof StringHttpMessageConverter) {
((StringHttpMessageConverter)converter).setDefaultCharset(StandardCharsets.UTF_8);
}
}
}