PropertiesLoaderUtils 出现中文乱码的解决方式

我就废话不多说了,大家还是直接看代码吧~

   try
    {
      EncodedResource encodedResource = new EncodedResource(new ClassPathResource(path), Charsets.UTF_8);
      Properties properties = PropertiesLoaderUtils.loadProperties(encodedResource);
    }
    catch (IOException e)
    {

      LOGGER.info("Champion:read properties failure",e);

    }

补充知识:使用Spring PropertyPlaceholderConfigurer 配置中文出现乱码的解决方法

问题描述

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

content.shell=#!/bin/bash \necho "test,测试一下!!" \nsleep $1

采用如下的配置方式:

<bean id="propertyConifgurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location">
    <value>classpath:evn.properties</value>
  </property>
</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="propertyConifgurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location">
    <value>classpath:evn.properties</value>
  </property>
  <property name="fileEncoding">
    <value>utf-8</value>
  </property>
</bean>

以上这篇PropertiesLoaderUtils 出现中文乱码的解决方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java8 streamList转换使用详解

    一.java8 stream 操作 List<Map<String, Object>> maps 转 Map<String, Object>的两种方法 第一种,实用于数据查询返回的是List<Map<String, Object>> maps 方法一. Map<String, Object>; resultMap = lists .stream() .flatMap(map ->map.entrySet().stream())

  • java SpringBoot自定义注解,及自定义解析器实现对象自动注入操作

    # java-SpringBoot自定义参数解析器实现对象自动注入 解析器逻辑流程图表 后台解析注解的解析器 首先,我在java后台编写了一个解析器,代码如下 import com.ruoyi.framework.interceptor.annotation.LoginUser; import com.ruoyi.project.WebMoudle.WebUser.domain.WebUser; import com.ruoyi.project.WebMoudle.WebUser.service

  • java8中Stream的使用以及分割list案例

    一.Steam的优势 java8中Stream配合Lambda表达式极大提高了编程效率,代码简洁易懂(可能刚接触的人会觉得晦涩难懂),不需要写传统的多线程代码就能写出高性能的并发程序 二.项目中遇到的问题 由于微信接口限制,每次导入code只能100个,所以需要分割list.但是由于code数量可能很大,这样执行效率就会很低. 1.首先想到是用多线程写传统并行程序,但是博主不是很熟练,写出代码可能会出现不可预料的结果,容易出错也难以维护. 2.然后就想到Steam中的parallel,能提高性能

  • java注解之运行时修改字段的注解值操作

    今天遇到需求:导入Excel时候列头会发生变化,客户是大爷要求你改代码, 导入Excel是用easypoi做的,识别表头是用注解@Excel(name = "xxx")通过这个name来匹配 那你表头要动,我这个注解是硬编码 所以就有动态设置这个表头 public class JavaVo{ @Excel(name = "xxx") private String userName; //省略getset方法 } ExcelImportUtil.importExcel

  • PropertiesLoaderUtils 出现中文乱码的解决方式

    我就废话不多说了,大家还是直接看代码吧~ try { EncodedResource encodedResource = new EncodedResource(new ClassPathResource(path), Charsets.UTF_8); Properties properties = PropertiesLoaderUtils.loadProperties(encodedResource); } catch (IOException e) { LOGGER.info("Champ

  • PHP MPDF中文乱码的解决方式

    废话不多说了,直接奔入主题了. 推荐教程:PHP使用MPDF类生成PDF的方法 1.config.php文件,大约67行: $this->autoLangToFont = true; 2.使用的时候 注意, +aCJK 这个参数,而不是  c这个参数 $mpdf=new \mPDF('+aCJK','A4','','',32,25,27,25,16,13); $mpdf->WriteHTML($content); $mpdf->Output(); 然后就输出中文了 这个针对版本mPDF6

  • php生成二维码时出现中文乱码的解决方法

    本文实例讲述了php生成二维码时出现中文乱码的解决方法.分享给大家供大家参考.具体分析如下: 最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个类型没有内容,随即判断没内容就加上一个固定的字符串,这样乱码的问题得以解决. php生成二维码的几种方式 1.google开放api,代码如下: 复制代码 代码如下: $urlToEncode="http://www.

  • Linux 中unzip解压时中文乱码的解决办法

    Linux 中unzip解压时中文乱码的解决办法 当我们在linux中解压一个含有中文名字的压缩包如"资料.zip"时,如果直接使用如下的命令,将会出现中文乱码. unzip 资料.zip 主要的原因是因为unzip在解压的时候会将编码转化为其内部默认的编码,而默认的编码根本不支持中文CP936编码.因此我们需要在解压的时候明确的指定需要使用的编码. 目前可以采用如下两种方式解决 方法一 在解压的时候直接指定编码格式 #指定GBK GB18030编码也是可以的 unzip -O CP9

  • java表单提交中文乱码的解决方法

    本文实例为大家分享了java表单提交中文乱码的解决方法,供大家参考,具体内容如下 主页index.xml <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>servlet演示</title> </head> <body> <h2&

  • springboot返回前端中文乱码的解决

    尝试了各种防止中文乱码的方式,但是还是乱码;最后还是细节问题导致; 解决方式: 以及俩种方式是百度的,我的问题不是这俩块 1.在requestMapping 中添加 produces @RequestMapping( value = "/login", produces = "application/json;charset=utf-8", method = RequestMethod.POST ) 2.在application.yml 中添加配置 spring:

  • idea启动spring项目中文乱码的解决方法

    使用 tomcat8 使用idea启动spring项目(前端jsp)时,发现控制台打印日志的中文全部都乱码,页面部分乱码,从请求分析得到,从后台返回的数据是正常的,只是js里面写死的数据是乱码 从这些信息可以分析得到, 控制台日志中文乱码, 但后台返回前端的编码方式是正常的, 前端js的数据中文乱码 解决方案: 1.控制日志乱码: 这些日志都是容器打印出来的,所以需要是配置容器, tomcat>conf>logging.properties把其它编码换成GBK 2.js中文乱码: 静态js也经

  • bat批处理脚本中文乱码的解决

    目录 问题描述 问题分析 问题解决 1.转换脚本文件的编码方式 2.更改代码页 问题描述 bat 批处理脚本如下 @echo off echo hello,world. echo 你好,中国 pause 在 CMD 执行该脚本时,出现了中文乱码 问题分析 乱码都跟字符编码有关系. 计算机只能处理数字,如果遇到文本,必须先将其转换为数字后才能处理,由此出现了字符编码(字符集).如果编码时采用某种字符编码,那么解码时,必须得相对应使用同一种字符编码,如采用不同的字符编码,会出现乱码. 问题解决 1.

  • MySql中表单输入数据出现中文乱码的解决方法

     MySQL会出现中文乱码的原因在于 1.server本身设定问题,一般来说是latin1 2.建库建表时没有制定编码格式. MySql中表单输入数据出现中文乱码的解决方法: 1.建库的时候 CREATE DATABASE test CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; 2.建表的时候 CREATE TABLE content ( text VARCHAR(100) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

  • MySQL从命令行导入SQL脚本时出现中文乱码的解决方法

    本文实例讲述了MySQL从命令行导入SQL脚本时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 在图形界面管理工具 MySql Query Browser中打开脚本(脚本包括建库.建表.添加数据),并执行,不会有任何问题:但是使用mysql命令行工具执行建库脚本时,添加数据中如果包含中文,存入的数据就是乱码或是???... 解决方法1:在MySql安装目录下找到my.ini,将[mysql]下的default-character-set=latin1改为default-characte

随机推荐