鍍金池/ 問答/Java  Linux/ get請(qǐng)求到j(luò)avaController亂碼

get請(qǐng)求到j(luò)avaController亂碼

postman顯示編碼格式是utf-8的Content-Type →application/json;charset=UTF-8

圖片描述

如題,我再pom.xml里配置了編碼格式。但是怎么到了controller還是亂碼的

回答
編輯回答
筱饞貓

你可以看下你項(xiàng)目的編碼集時(shí)什么,還有指定maven 編譯時(shí)的編碼,maven默認(rèn)是gbk編譯

2018年3月23日 23:30
編輯回答
蝶戀花

你的信息給的不夠多,根據(jù)你給的信息沒有辦法判斷你項(xiàng)目是使用哪種架構(gòu)方式的,不管哪種方式,最終你都要解決編碼格式化問題。
你可以嘗試一下幾種方案,如果你是偏好配置編程,那么你應(yīng)該在的web.xml的過濾器頂部添加類似如下代碼

<filter> 
    <!-- if you want encoding all request, this should be at the top of all your filters -->
    <filter-name>encodingFilter</filter-name>  
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    <init-param>  
       <param-name>encoding</param-name>  
       <param-value>UTF-8</param-value>  
    </init-param>  
    <init-param>  
       <param-name>forceEncoding</param-name>  
       <param-value>true</param-value>  
    </init-param>      
</filter>  
<filter-mapping>  
    <filter-name>encodingFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping>

還有一種可能是maven編碼格式導(dǎo)致,但我感覺可能性不大,大概需要如下配置:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    ...
</properties>

如果你是偏于注解編程的方式,那么你可以裝在一個(gè)bean,大概代碼如下:

@Bean public StringHttpMessageConverter stringHttpMessageConverter() {
    return new StringHttpMessageConverter(StandardCharsets.UTF_8); //Java 7 imported, 我比較偏好這種
    //return new StringHttpMessageConverter(Charset.forName("UTF-8"); // 常規(guī)手段
}

如果你使用的是embedded tomcat,那么你或許需要裝載一個(gè)bean,操作如下:

@Bean public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    tomcat.setUriEncoding("UTF-8");
    ...
    return tomcat;
}

如果你使用的是外部tomcat,那么我建議你在server.xml http或https模塊(視你的請(qǐng)求協(xié)議而定)添加coding過濾,配置大概如下:

<connector port="8080" uRIEncoding="utf-8" ... />

正如你在maven中配置的一樣,也是方式之一。代碼可能存在拼寫或記憶錯(cuò)亂問題,請(qǐng)各路大牛拍磚,指正

2018年7月27日 11:53