zoukankan      html  css  js  c++  java
  • 使用Spring PropertyPlaceholderConfigurer 配置中文出现乱码的解决方法

    在使用org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 读取配置文件时,发现对于中文的处理会出现乱码现象,比如有如下的配置项及其内容:

    jdbc.url=jdbc:mysql://192.168.0.89:3306/pcms-山东农信?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false

    采用如下的配置方式:

    <bean id="propertyConfigurer"
              class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:config/property/jdbc.properties</value>
                    <value>classpath:config/property/baiduPush.properties</value>
                </list>
        </bean>

    通过Spring获取到的配置项内容,中文变成了乱码。

    通过了解类org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的继承关系,发现父类org.springframework.core.io.support.PropertiesLoaderSupport中有这样的属性fileEncoding,这一属性的使用是在loadProperties方法中:

    /**
         * Load properties into the given instance.
         * @param props the Properties instance to load into
         * @throws IOException in case of I/O errors
         * @see #setLocations
         */
        protected void loadProperties(Properties props) throws IOException {
            if (this.locations != null) {
                for (Resource location : this.locations) {
                    if (logger.isInfoEnabled()) {
                        logger.info("Loading properties file from " + location);
                    }
                    try {
                        PropertiesLoaderUtils.fillProperties(
                                props, new EncodedResource(location, this.fileEncoding), this.propertiesPersister);
                    }
                    catch (IOException ex) {
                        if (this.ignoreResourceNotFound) {
                            if (logger.isWarnEnabled()) {
                                logger.warn("Could not load properties from " + location + ": " + ex.getMessage());
                            }
                        }
                        else {
                            throw ex;
                        }
                    }
                }
            }
        }

    通过添加fileEncoding=utf-8属性可以解决上述问题:

    <bean id="propertyConfigurer"
              class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <list>
                    <value>classpath:config/property/jdbc.properties</value>
                    <value>classpath:config/property/baiduPush.properties</value>
                </list>
            </property>
            <property name="fileEncoding">
                <value>utf-8</value>
            </property>
        </bean>



  • 相关阅读:
    《javascript实战》Part1——2成功javascript开发者的7个习惯
    《javascript实战》Part1——1
    [转载]——技术人员如何去面试?
    [转载]javascript练习(二)JS实现淘宝幻灯片效果
    [转载]——To 注释 or not 注释, that is a question
    [转载]javascript练习(一)JS仿Flash图片切换效果
    [转载]——网站前端优化一些小经验
    w3c盒式模型/ie盒式模型
    jQuery-动画 animate() hide() show() toggle() fadeT0() slideToggle()
    24.OOP面向对象;
  • 原文地址:https://www.cnblogs.com/penghq/p/10138223.html
Copyright © 2011-2022 走看看