解决Java中properties文件编码问题
作者:KING丨殇痕 发布时间:2022-07-21 14:09:06
标签:Java,properties
1、properties文件显示乱码问题
原因是因为properties默认使用ASCII码,就算在文件中填写了中文,再打开后依然会转换成ASCII码的形式。
首先确定properties配置文件的编码格式,通常情况下properties的默认编码格式为ISO-8859-1。
更改properties的编码格式为UTF-8:
IDEA:设置->文件编码
eclipse:右键该文件->properties
这里不但设置了编码格式为UTF-8,旁边还有Transparent native-to-ascii conversion选项(eclipse里面没有),这个东西有啥作用呢
2、读取properties文件乱码
设置完properties文件编码格式为UTF-8后,一般我们通过字节流读取properties文件的方式会乱码:
public void TestProp1() throws IOException {
Properties properties = new Properties();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("application.properties");
properties.load(in);
System.out.println(properties.getProperty("yaml.name"));
}
解决办法就是通过字符流的方式读取properties文件:
public void TestProp() throws IOException {
Properties properties = new Properties();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("application.properties");
properties.load(new InputStreamReader(in, "UTF-8"));
System.out.println(properties.getProperty("yaml.name"));
}
3、Spring boot的@ConfigurationProperties读取properties文件乱码
方法一
使用yml文件
方法二
设置Transparent native-to-ascii conversion也就是上述图片上属性文件的配置勾选自动转换成ASCII,但显示原生的内容。
在IDEA勾选这个选项的作用就是:显示为UTF-8格式,但是运行时转换成ASCII的形式,实际上使用的是native2ascii.exe来进行转换。
运行时显示如下图:
方法三
添加注解@PropertySource并声明encoding=“UTF-8”
//加注解
@Component
@ConfigurationProperties(prefix = "yaml")
@PropertySource(value = {"classpath:yaml.properties"}, encoding = "UTF-8")
注意:这种方法只能对自定义的properties文件有效,对于spring boot默认生成的application.properties没有效果
来源:https://blog.csdn.net/sunp_csdn/article/details/122821197


猜你喜欢
- Recyclerview现在基本已经替代Listview了,RecyclerView也越来越好用了 当我们有实现条目的拖拽排序和
- 一、BufferedImage类介绍生成验证码图片主要用到了一个BufferedImage类,如下:创建一个DrawImage Servle
- #line #line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出。下面的示例说明如何报告与行号关联的两个警告。#line
- 本文实例为大家分享了RecyclerView实现点击条目删除的具体代码,供大家参考,具体内容如下MainActivity.javapubli
- 本文实例展示了DevExpress实现GridView当无数据行时提示消息的方法,具体步骤如下:主要功能代码部分如下:/// <sum
- maven的配置文件settings.xml存在于两个地方:1.安装的地方:${M2_HOME}/conf/settings.xml2.用户
- 为了表示不同的浓度值,对颜色条应用颜色梯度变化,基本方法是对ARGB分量乘以一个渐变系数。下面是对十种颜色应用的三个梯度值的过程。 publ
- 一、理解 Android 的 WindowWindow 表示一个窗口的概念,是一个抽象的概念,每一个 Window 都对应一个 View 和
- 目录一、SpringMvc框架简介1、Mvc设计理念2、SpringMvc简介二、SpringMvc执行流程1、流程图解2、步骤描述3、核心
- 一、概念1.1、什么是服务治理Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理服务治理就是提供
- 业务处理这是通过 Spring 在 Controller中注入Service模型层而在 Service模型层 结合 Mybatis / My
- 本文实例讲述了Java数组高级算法与Arrays类常见操作。分享给大家供大家参考,具体如下:冒泡排序冒泡排序原理冒泡排序代码:package
- FTP(File Transfer Protocol)就是文件传输协议。通过FTP客户端从远程FTP服务器上拷贝文件到本地计算机称为下载,将
- 1、0前言最近在学习 Go 语言,Go 语言中有指针对象,一个指针变量指向了一个值的内存地址。学习过 C 语言的猿友应该都知道指针的概念。G
- 经常要检测某些IP地址范围段的计算机是否在线。有很多的方法,比如进入到网关的交换机上去查询、使用现成的工具或者编写一个简单的DOS脚本等等,
- MyBatis 通过包含的jdbcType类型BIT FLOAT CHAR &nbs
- 安卓自定义分段式的进度条,供大家参考,具体内容如下前一段时间公司新项目接到一个新需求,其中界面需要用到一个分段式的进度条,找了半天没有发现类
- 题目要求思路一:暴力模拟由于数据范围不算离谱,所以直接遍历解决可行。Javaclass Solution { pu
- SSO :同一个帐号在同一个公司不同系统上登陆 使用SpringSecurity实现类似于SSO登陆系统是十分简单的 下面我就搭
- 本文实例介绍了Android实现ImageView图片双击放大及缩小的相关技巧,分享给大家供大家参考,具体内容如下public class