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


 

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

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

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

測試發現,一般情況下,先更新maven依賴,然后build 1一次,rebuild 一次,mvn package一次,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 構建打包項目時正確的把支持中文編碼的代碼構建上去,可能是這個原因。

下面是成功實現的效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM