弄系统的时候,发现带中文的数据插入数据库时,为??,改bug改了一晚上,最后发现是application.properties文件中,连接数据库的配置没弄好。
一、首先要确定前后端传输的编码一致,需要重写WebMvcConfigurer类的extendMessageConverters()方法
代码如下
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.nio.charset.StandardCharsets;
import java.util.List;
@EnableWebMvc
@Configuration
public class WebCharacterEncodingFilter implements WebMvcConfigurer {
/**
* 乱码处理
*/
public HttpMessageConverter<String> responseBodyConverter() {
final StringHttpMessageConverter converter = new StringHttpMessageConverter(StandardCharsets.UTF_8);
converter.setWriteAcceptCharset(false);
return converter;
}
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
if (converters.size() > 0) {
converters.add(converters.get(0));
converters.set(0, responseBodyConverter());
} else {
converters.add(responseBodyConverter());
}
}
}
二、要修改 application.properties文件
spring.datasource.url=jdbc:mysql://localhost:3306/tp_music?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
时区和地区后面,要加上&useUnicode=true&characterEncoding=utf8&useSSL=false,这里要看你建的数据库的编码,utf8的话就用这个。
最后完美解决