Spring MVC中,通過Java程式碼讀取資原始檔時,發生亂碼的解決方法

rainbow702發表於2017-02-22

有過 Spring MVC 開發經驗的童鞋,應該都知道如何在 xml 配置資原始檔:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="basenames">
        <list>
            <value>resource</value>
        </list>
    </property>
</bean>

注意:id 必須是 messageSource

但是今天遇到一個問題,使用上面的配置時,當資原始檔中包含中文時,在Java程式碼中讀取出來的值都是亂碼。(參考:使用Java 讀取 Spring 資原始檔中的內容)

不過,還好,我比較機智 : ),根據以往的經驗,spring 應該會提供方法來給我們解決這個問題的。

然後,我開啟了上面所使用到的 ResourceBundleMessageSource 類,遺憾的是,這個類中並會提供任何設定 編碼 的方法或者屬性。

可是,我發現這個類是繼承自 AbstractResourceBasedMessageSource 這個類的,我嘗試著去看了一下這個類。哈哈,找到了,這個類中有一個 defaultEncoding 屬性,且提供了 setter 方法,這個不就是我想要的麼。趕緊的,設定了一下:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    <property name="defaultEncoding">
        <value>UTF-8</value>
    </property>
    <property name="basenames">
        <list>
            <value>resource</value>
        </list>
    </property>
</bean>

再去執行相關程式碼,你會發現不會再有亂碼的情況發生了。

參考: Spring讀取properties檔案出現亂碼的解決方法

相關文章