1. 程式人生 > >idea ssm項目出現日誌中文亂碼,封裝的json中的msg字段中文亂碼(但是json封裝的bean中的字段不亂碼)等其他各種項目下的中文亂碼解決方案

idea ssm項目出現日誌中文亂碼,封裝的json中的msg字段中文亂碼(但是json封裝的bean中的字段不亂碼)等其他各種項目下的中文亂碼解決方案

exp model static supported 文件的 support ppi enc pat

開頭劃重點!(敲黑板):rebuild和mvn package的循環往復好幾次的操作是解決這個問題的最主要的方法!

經過多次試驗,發現這樣做就可以正常顯示中文了

我說為什麽有時候亂碼,有時候中文正常,原來下面的這些地方都必須設置好,特別是 rebuild和mvn package的循環往復好幾次的操作

首先,在項目原有的基礎上加上

<!-- 新加了此行用於解決中文編碼問題,然後項目本身編碼必須設置為全用utf-8(在setting中設置,得把項目加進去,然後修改,修改時也選utf-8),然後打包war時多rebuild幾次,項目內整體所有地方就都不會出現中文亂碼問題了,不管是msg字段還是日誌等都不會出現中文亂碼問題了,原因至今未找到 -->
                            <!-- 更新一下maven依賴,然後右擊項目,先build一次,然後再rebuild一次,然後再用windows資源管理器,進入項目目錄,
mvn package一次,然後再rebuild一次,然後再mvn package一次,這樣 rebuild和mvn package循環往復好幾次,這樣才能解決中文編碼問題,
這是個bug,不過終於用這種奇技淫巧實現了,網上都找不到這樣的方法,完全是因為偶然的多rebuild和mvn package幾次時,看出了解決中文編碼亂碼後的不亂碼的效果,
才發現這樣能解決中文編碼問題的,可能是rebuild項目和mvn package時出現了一些文件上的影響到字符編碼的因素,導致只有往復循環執行上面說的操作好幾次,才能夠在rebuild和mvn package 構建打包項目時正確的把支持中文編碼的代碼構建上去,可能是這個原因。
 -->
                            <value>application/json;charset=UTF-8</value>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx
="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://
www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd "> <!-- springmvc的配置文件,包含網站跳轉邏輯的控制、配置 --> <!-- 組件掃描的方式加載Handler --> <context:component-scan base-package="org.kinome" use-default-filters="true"> <!-- 只掃描控制器 其他不掃 --> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:include-filter> </context:component-scan> <!-- 視圖解析器 --> <!--<bean--> <!--class="org.springframework.web.servlet.view.InternalResourceViewResolver">--> <!--<property name="prefix" value="/WEB-INF/views/"></property>--> <!--<property name="suffix" value=".jsp"></property>--> <!--</bean>--> <!-- 視圖解析器 必須要開 否則使用 ModelAndView 時無法找到jsp路徑位置 這裏只開視圖解析器 不使用上面那個視圖解析器的配置就行了 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" /> <!-- 兩個標準配置 --> <!-- 將springmvc不能處理的請求交給tomcat 實現動態資源和靜態資源都能處理 --> <mvc:default-servlet-handler></mvc:default-servlet-handler> <!-- 使用消息轉換器轉換編碼方式 因為spring的某個類在處理返回json時編碼指定為iso-xxx了,所以會出現中文亂碼,需要進行編碼轉換 --> <!-- 需要把這個bean放在 <mvc:annotation-driven/> 之前(上面),否則不會生效 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <!-- 因為優先級的問題 需要把 ByteArray 加在 json的前面,否則返回的文件會損壞 參考:https://blog.csdn.net/u013555226/article/details/77026068 http://www.iteye.com/topic/1125784 --> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=utf-8</value> <value>text/html;charset=UTF-8</value> <!-- 新加了此行用於解決中文編碼問題,然後項目本身編碼必須設置為全用utf-8(在setting中設置,得把項目加進去,然後修改,修改時也選utf-8),然後打包war時多rebuild幾次,項目內整體所有地方就都不會出現中文亂碼問題了,不管是msg字段還是日誌等都不會出現中文亂碼問題了,原因至今未找到 --> <!-- 更新一下maven依賴,然後右擊項目,先build一次,然後再rebuild一次,然後再用windows資源管理器,進入項目目錄, mvn package一次,然後再rebuild一次,然後再mvn package一次,這樣 rebuild和mvn package循環往復好幾次,這樣才能解決中文編碼問題, 這是個bug,不過終於用這種奇技淫巧實現了,網上都找不到這樣的方法,完全是因為偶然的多rebuild和mvn package幾次時,看出了解決中文編碼亂碼後的不亂碼的效果, 才發現這樣能解決中文編碼問題的,可能是rebuild項目和mvn package時出現了一些文件上的影響到字符編碼的因素,導致只有往復循環執行上面說的操作好幾次,才能夠在rebuild和mvn package 構建打包項目時正確的把支持中文編碼的代碼構建上去,可能是這個原因。 --> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean> <!-- 支持springmvc一些更加高級的功能 比如 jsr303校驗 快捷的ajax請求 映射動態請求 xxx --> <mvc:annotation-driven/> <!-- location元素表示web目錄下的static包下的所有文件; mapping元素表示以/static開頭的所有請求路徑,如/static/a 或者/static/a/b; 該配置的作用是:DispatcherServlet不會攔截以/static開頭的所有請求路徑,並當作靜態資源 交由Servlet處理 --> <mvc:resources mapping="/static/**" location="/static/"/> <!--導入文件上傳配置--> <!-- SpringMVC上傳文件時,需要配置MultipartResolver處理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> <!-- 指定所上傳文件的總大小不能超過10MB 10240KB。註意maxUploadSize屬性的限制不是針對單個文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="10240000"/> </bean> <!-- SpringMVC在超出上傳文件限制時,會拋出org.springframework.web.multipart.MaxUploadSizeExceededException --> <!-- 該異常是SpringMVC在檢查上傳的文件信息時拋出來的,而且此時還沒有進入到Controller方法中 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 遇到MaxUploadSizeExceededException異常時,自動跳轉到 /views/errorPage/fileSizeIsTooLarge.jsp 頁面 --> <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException"> /views/errorPage/fileSizeIsTooLarge.jsp </prop> </props> </property> </bean> </beans>

然後,把項目本體字符全部設置為utf-8:

註意:這裏需要+一個項目,然後點擊修改來修改它的編碼技術分享圖片

這裏需要把項目加進去後再修改,修改後idea的配置文件也會更新,這裏用git看到更新了

這個settings是分項目的,也就是說不同的項目設置是不同的,所以這裏只有它自己,另一個項目是看不到這個設置路徑的

技術分享圖片

技術分享圖片

然後,關鍵來了!

重點是: 我的是idea的maven的ssm項目,我發現項目在需要打包時,必須先技術分享圖片

更新一下maven依賴,然後右擊項目,先build一次,然後再rebuild一次,然後再用windows資源管理器,進入項目目錄,

mvn package一次,然後再rebuild一次,然後再mvn package一次,這樣 rebuild和mvn package循環往復好幾次,這樣才能解決中文編碼問題,

這是個bug,不過終於用這種奇技淫巧實現了,網上都找不到這樣的方法,完全是因為偶然的多rebuild和mvn package幾次時,看出了解決中文編碼亂碼後的不亂碼的效果,

才發現這樣能解決中文編碼問題的,可能是rebuild項目和mvn package時出現了一些文件上的影響到字符編碼的因素,導致只有往復循環執行上面說的操作好幾次,才能夠在rebuild和mvn package 構建打包項目時正確的把支持中文編碼的代碼構建上去,可能是這個原因。

下面是成功實現的效果:

技術分享圖片

idea ssm項目出現日誌中文亂碼,封裝的json中的msg字段中文亂碼(但是json封裝的bean中的字段不亂碼)等其他各種項目下的中文亂碼解決方案