我創建了一個Spring Boot應用程式,在localhost中運行得非常好,但我無法將西里爾字母保存到資料庫中。Hibernate查詢試圖將一個[?????????]字串保存到資料庫中,因此在到達資料庫之前,它被轉化了。在我的資料庫中,西里爾字母作業正常。所有的表和列都是utf8mb4_unicode_ci.
。我試過這樣做。utf8 charset with Thymeleaf Мумин的回答。但是我在查看西里爾字母時沒有問題,我在保存它們時有問題。
在我的application.properties中:
server.servlet.encoding.charset=UTF-8。
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
spring.datasource.tomcat.connection-perties=useUnicode=true;characterEncoding=utf-8;
我的EncodingConfig類:
package util。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;
@Configuration
public class EncodingConfig
{
private @Autowired AutowireCapableBeanFactory beanFactory;
public FilterRegistrationBean<CharacterEncodingFilter> filterRegistrationBean()
{
FilterRegistrationBean<CharacterEncodingFilter> registrationBean = new FilterRegistrationBean<CharacterEncodingFilter>()。
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter() 。
beanFactory.autowireBean(characterEncodingFilter)。
characterEncodingFilter.setForceEncoding(true)。
characterEncodingFilter.setEncoding("UTF-8")。
registrationBean.setFilter(characterEncodingFilter)。
registrationBean.addUrlPatterns("/*")。
return registrationBean。
}
}
MVCConfig類:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.Companyname.Controllers")
public class MVCConfig implements WebMvcConfigurer, ApplicationContextAware
{
@Autowired[/span
private ApplicationContext applicationContext。
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
{
this.applicationContext = applicationContext。
}
@Bean[/span
public ViewResolver viewResolver()
{
ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver();
thymeleafViewResolver.setTemplateEngine((ISpringTemplateEngine) templateEngine())。
thymeleafViewResolver.setCharacterEncoding("UTF-8")。
return thymeleafViewResolver。
}
@Bean
public TemplateEngine templateEngine()
{
SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine()。
springTemplateEngine.setEnableSpringELCompiler(true)。
springTemplateEngine.setTemplateResolver(templateResolver())。
return springTemplateEngine;
}
@Bean[/span
public ITemplateResolver templateResolver()
{
SpringResourceTemplateResolver springResourceTemplateResolver = new SpringResourceTemplateResolver();
springResourceTemplateResolver.setApplicationContext(applicationContext)。
springResourceTemplateResolver.setPrefix("/WEB-INF/views/"/span>)。
springResourceTemplateResolver.setTemplateMode(TemplateMode.HTML)。
springResourceTemplateResolver.setSuffix(".html")。
springResourceTemplateResolver.setCharacterEncoding("UTF-8")。
return springResourceTemplateResolver。
}
我在pom檔案中加入了以下內容:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
我的控制器方法在@RequestMapping注解中具有這個屬性
produces = "text/plain;charset=UTF-8"
在localhost上一切正常,但在實際的Web服務器(Linux,Tomcat)上就不正常了。同樣,顯示utf字符也可以,但我不能保存它們,它們被替換成了? 有什么想法,我應該在哪里搜索?
uj5u.com熱心網友回復:
我有2個建議,你沒有提到你使用的是什么資料庫。
1# 試著在資料庫的URL中指定unicode和utf-8,例如:
spring.datasource.url = jdbc:mysql:/localhost:3306/dbname?useUnicode=true& characterEncoding=UTF-8
2# 配置為代碼
public class MvcConfig implements WebMvcConfigurer {
public void configureMessageConverters(List<HttpMessageConverter<? >> converters) {
StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(Charset. forName("UTF-8"))。)
converters.add(stringHttpMessageConverter)。
}
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false)。
}
希望能有所幫助
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/319414.html
標籤:
下一篇:嚴重。配置類[org.springframework.web.context.ContextLoaderListener]NoClassDefFoundError:javax/servlet/Serv
