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实现类的private、protected、public、static以及继承
    OSS网页上传和断点续传(STSToken篇)
    OSS网页上传和断点续传(OSS配置篇)
    Linq sum()时遇到NULL
    SQLSERVER事务日志已满 the transaction log for database 'xx' is full
    笔记本高分辨软件兼容问题,字体太小或模糊
    H5上传图片之canvas
    An error occurred while updating the entries. See the inner exception for details.
    无限级结构SQL查询所有的下级和所有的上级
    SQLserver 进程被死锁问题解决
  • 原文地址:https://www.cnblogs.com/penghq/p/10138223.html
Copyright © 2011-2022 走看看