转载请注明出处
spring boot 在读取本地文件方式时,中文乱码,但读取application.properties不乱码,用文本工具查看resorces下的application.properties,发现中文格式是iso-8859-1编码显示,原因找到,编辑器工具会自动转编码
查看源码,看到底层调用Properties.load()时,输入的流只支持8859-1.
一种解决方法:修改代码,新增一种配置文件格式,解决中文乱码
下面新增**.prop格式为例
实现处理类, 主要在props.load()做修改
package com.dl.qzj.txcard.config.common;
import org.springframework.boot.env.PropertySourceLoader;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
/**
* @author xingguanghui
* @create 2018-03-14 21:30
**/
public class MyPropertiesHandler implements PropertySourceLoader {
public MyPropertiesHandler() {
}
@Override
public String[] getFileExtensions() {
return new String[]{"prop"};
}
@Override
public PropertySource<?> load(String name, Resource resource, String profile) throws IOException {
if (profile == null) {
Properties properties = getProperties(resource);
if (!properties.isEmpty()) {
PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource(name, properties);
return new PropertiesPropertySource(name, properties);
}
}
return null;
}
private Properties getProperties(Resource resource){
Properties properties= new Properties();
try(InputStream inputStream = resource.getInputStream();){
properties.load(new InputStreamReader(inputStream, "utf-8"));
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return properties;
}
}
在项目路径下新建 META-INF 文件夹 spring.factories 文件做配置
org.springframework.boot.env.PropertySourceLoader=com.dl.qzj.txcard.config.common;.MyPropertiesHandler
重启项目,可以处理 ***.prop 格式的配置文件,中文不会乱码
转载于:https://my.oschina.net/u/3560494/blog/1634974
分享到:
相关推荐
本篇文章将详细介绍Spring Boot如何读取配置文件,以及提供一些调试示例代码,帮助你更好地理解和运用。 ### 1. 配置文件位置与优先级 Spring Boot支持多种类型的配置文件,包括`application.properties`和`...
为了解决这个问题,本文将详细介绍SpringBoot乱码问题解决方案,并提供详细的示例代码和配置方法。 一、乱码问题的原因 乱码问题的原因是由于字符编码的不匹配,导致文字无法正确显示。在SpringBoot项目中,默认...
在Spring Boot应用中,多数据源配置是一项重要的技术实践,特别是在大型系统中,可能需要连接到多个数据库以实现数据隔离、读写分离或是分布式事务管理。Spring Boot以其强大的自动化配置能力,使得设置多数据源变得...
1、基于springboot框架,application.yml配置多个数据源,使用AOP以及AbstractRootingDataSource、ThreadLocal来实现多数据源切换,以实现读写分离。mysql的主从数据库需要进行设置数据之间的同步。 2、AOP来实现...
1. **读取本地JSON文件(但显示汉字乱码)** 这个问题通常发生在读取文件时没有正确指定字符编码。在Android中,我们通常使用`AssetManager`来访问应用的资源文件,包括JSON文件。下面的代码展示了如何读取JSON文件...
SpringBoot中读取配置的七种方法总结
SpringBoot读取配置文件常用方法解析 SpringBoot 读取配置文件是指在 SpringBoot 项目中读取外部配置文件的方法,用于获取配置信息。下面将介绍 SpringBoot 读取配置文件的常用方法。 传统项目读取配置方式 在没有...
在处理CSV文件时,尤其是涉及中文字符时,可能会遇到乱码问题。这个问题通常与字符编码设置有关。下面我们将深入探讨如何在Java中正确地读取和写入CSV文件,以及解决中文乱码的问题。 1. **字符编码的理解**: - ...
然而,当处理含有汉字的Lua文件时,反编译过程中可能会出现汉字乱码的问题,这主要与字符编码不匹配有关。本文将详细介绍如何在C#环境下,特别是使用Visual Studio 2013时,解决Lua文件反编译后的汉字乱码问题。 ...
综上所述,解决Spring框架中使用注解处理JSON数据时出现中文乱码的问题主要涉及三个方面的内容:明确客户端和服务端之间的字符集编码、检查并修正XML配置文件以及引入必要的依赖库。通过对这些问题的细致分析和合理...
SpringBoot是一款基于Spring框架的高度模块化、简化配置的开发工具,它使得开发者能够更快速地构建高质量的应用。在"springboot-config01配置"中,我们主要关注的是SpringBoot的属性配置以及如何注入这些配置到应用...
在C#编程中,处理汉字乱码问题是一个常见的需求,尤其是在读取或写入文本文件时。当在C#控制台应用中遇到汉字输出乱码的情况,这通常是因为编码不匹配所导致的。编码是字符集与二进制数据之间的转换规则,不同的系统...
最新版的druid和旧版在filter配置方面有些不同,以下是旧版druid中配置filter: spring: ##数据库连接信息 datasource: url: jdbc:mysql://localhost:3306/young username: root password: root driver-class...
在Spring Boot应用中,多模块配置文件的读取是一个重要的实践,它有助于提高代码的可维护性和模块化。本文将详细探讨如何在Spring Boot的多模块项目中管理和使用不同的配置文件,以实现低耦合的设计。 首先,了解...
乱码通常出现在字符编码不匹配的情况下,即数据存储或传输时采用的编码格式与读取或显示时使用的编码格式不一致。在Java中,文件、网络流、数据库、控制台等都可能成为乱码的来源。 中文乱码问题在Java中的表现多种...
Java 国际化(i18n)是让软件能够适应不同语言和地区的过程,而中文乱码问题在处理多语言支持时经常遇到。`ResourceBundle` 是 Java 中用于管理国际化资源的关键类,它允许开发者存储特定语言环境下的文本、消息和...
当处理包含中文字符的CSV文件时,可能会遇到乱码问题,这通常与文件编码设置有关。本篇文章将详细探讨如何在Java中解析CSV文件,并解决中文乱码的问题。 首先,我们需要了解如何使用Java的标准库`java.io`和`java....