2015-02-08 45 views
1

我爲我的Web應用程序使用SpringBoot和Spring MVC,當我提交任何表單時,我的控制器獲取用ISO-8859-1而不是UTF-8編碼的信息。SpringBoot - UTF8&Controller

我application.properties

spring.jpa.hibernate.ddl-auto=update 
spring.datasource.url=jdbc:mysql://localhost/pfg 
spring.datasource.username= 
spring.datasource.password= 
spring.datasource.driver-class-name=com.mysql.jdbc.Driver 
spring.datasource.sqlScriptEncoding=UTF-8 
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect 
spring.jpa.properties.jadira.usertype.autoRegisterUserTypes=true 
spring.messages.encoding=UTF-8 
server.tomcat.uri-encoding=UTF-8 
spring.http.encoding.charset=UTF-8 
spring.thymeleaf.mode=HTML5 
spring.thymeleaf.encoding=UTF-8 

我也有這個ServerInitializer類:

@Configuration 
public class ServletInitializer extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(PfgApplication.class); 
    } 


    @Bean 
    @Order(Ordered.HIGHEST_PRECEDENCE) 
    CharacterEncodingFilter characterEncodingFilter() { 
     CharacterEncodingFilter filter = new CharacterEncodingFilter(); 
     filter.setEncoding("UTF-8"); 
     filter.setForceEncoding(true); 
     return filter; 
    } 



} 

感謝您的幫助。

+1

這看起來對我很可疑。你使用什麼版本? Spring Boot 1.2有一個明確的故事,默認情況下,如果你使用嵌入式容器,它顯然是你應該的。順便說一下,該過濾器是爲您創建的。是什麼讓你認爲它完全是ISO-8859-1編碼的? – 2015-02-09 07:59:30

回答

6

您是否偶然使用1.3.0.M5?在這種情況下,有一個錯誤,你可能要考慮使用變通方法: https://github.com/spring-projects/spring-boot/issues/3912

@Autowired 
private HttpEncodingProperties httpEncodingProperties; 
@Bean 
public OrderedCharacterEncodingFilter characterEncodingFilter() { 
    OrderedCharacterEncodingFilter filter = new OrderedCharacterEncodingFilter(); 
    filter.setEncoding(this.httpEncodingProperties.getCharset().name()); 
    filter.setForceEncoding(this.httpEncodingProperties.isForce()); 
    filter.setOrder(Ordered.HIGHEST_PRECEDENCE); 
    return filter; 
} 
+2

只是現在看到@ user3692964的回答http://stackoverflow.com/a/32697248/53444是一個相當古老的問題。現在回答問題,因爲它現在相關;在1.3.0發佈的時候會下降。 – Tim 2015-09-21 14:16:26

0

爲例

@RequestMapping(value="/user", **produces="text/html;charset=UTF-8"**) 

public class UserController{ 
}   

加黑體部分是OK!